页面请求过慢

时间:2022-01-26 23:35:09
第一次做网站,还是用的ashx

流程:Login.ashx->NVelocity模板引擎渲染HTML文件(Login.html)展示给用户->Login.ashx处理数据->相关操作;

两个页面通过  hidde 隐藏字段Login,判断是展示还是登录。


<!DOCTYPE html>
<html lang="en">
    
<head>
        <title>毕业设计系统登录</title><meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="Login/css/bootstrap.min.css" />
<link rel="stylesheet" href="Login/css/bootstrap-responsive.min.css" />
        <link rel="stylesheet" href="Login/css/matrix-login.css" />
        <link href="Login/css/font-awesome.css" rel="stylesheet" />
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700,800' rel='stylesheet' type='text/css'>

    </head>
    <body>
        <div id="loginbox">            
            <form id="loginform" class="form-vertical" action="../Login.ashx" method="post">
                <input type="hidden" name="Login" value="true" />
                <div class="control-group">
                    <div class="controls">
                        <div class="main_input_box">
                            <span class="add-on bg_lg"><i class="icon-user"></i></span><input type="text" name="Username" placeholder="用户名" required='required' oninvalid="setCustomValidity('请填写用户名!')" oninput="setCustomValidity('')" />
                        </div>
                    </div>
                </div>
                <div class="control-group">
                    <div class="controls">
                        <div class="main_input_box">
                            <span class="add-on bg_ly"><i class="icon-lock"></i></span><input type="password" name="Password" placeholder="密码" required='required' oninvalid="setCustomValidity('请填写密码!')" oninput="setCustomValidity('')"/>
                        </div>
                    </div>
                </div>
                <div class="form-actions">
                    <span class="pull-left"><a href="#" class="flip-link btn btn-info" id="to-recover">忘记密码?</a></span>
                    <span class="pull-right"><input type="submit" value="登录" class="btn btn-success"/></span>
                </div>
            </form>
            <form id="recoverform" action="#" class="form-vertical">
<p class="normal_text">请联系相关人员重置密码!</p>
                <div class="form-actions">
                    <span class="pull-left"><a href="#" class="flip-link btn btn-success" id="to-login">&laquo; 返回登录</a></span>
                    
                </div>
            </form>
        </div>
        
        <script src="Login/js/jquery.min.js"></script>  
        <script src="Login/js/matrix.login.js"></script> 
    </body>

</html>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Data;
using System.Data.SqlClient;

namespace thesis
{
    /// <summary>
    /// 登录界面
    /// </summary>
    public class Login : IHttpHandler, IRequiresSessionState
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";
            string filename="~/Login";
            string template="login.html";
            context.Session.Clear();   //清除Session的所有信息(记录用户的一些基本信息)

            if (context.Request["Login"] != null)
            {
                bool login = Convert.ToBoolean(context.Request["Login"]);
                if (login)
                {
                    string usr = context.Request["Username"];
                    string pwd = context.Request["Password"];
                    dynamic login_data = CommonHelper.Login(usr, pwd);   //登录类

                    if (login_data.error == 0)   //判断用户是否登录成功!
                    {
                        //将用户的基本信息存入Session
                        context.Session["ID"] = login_data.id;           //用户ID
                        context.Session["ROLE"] = login_data.role;       //用户角色类型(学生,教师)
                        context.Session["NAME"] = login_data.name;       //用户姓名

                        if (string.Equals("teacher", login_data.role))   //判断用户是教师
                        {
                            context.Session["ISLEADER"] = login_data.isleader;        //该教师是否具有管理能力
                            context.Session["LEADERLV"] = login_data.leaderLv;         //管理能力的等级
                        }
                                     
                        context.Response.Redirect("index.ashx");                   //重定向到主页
                    }
                    else
                    {
                        switch ((int)login_data.error)
                        {
                            case -1:
                                CommonHelper.YesOrNo(context, false, "", "用户名输入有误", "Login.ashx");
                                break;
                            case -2:
                                CommonHelper.YesOrNo(context, false, "", "无此用户", "Login.ashx");
                                break;
                            case -3:
                                CommonHelper.YesOrNo(context, false, "", "密码输入错误,请重新输入", "Login.ashx");
                                break;
                            default:
                                CommonHelper.YesOrNo(context, false, "", "错误信息不明", "Login.ashx");
                                break;
                        }
                    }
                }
                else
                {
                    string html=CommonHelper.GetHtml(filename,template,null);
                    context.Response.Write(html);
                }
            }
            else
            {
                string html=CommonHelper.GetHtml(filename, template, null);
                context.Response.Write(html);
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}


问题一:搭建好了以后,进入Login.ashx页面很慢,但是取消加载页面,就立即出现页面。不知道啥情况?ashx不是速度会快一点的么?

我的观点:问题是不是出现在这里?
if (context.Request["Login"] != null)
            {
                bool login = Convert.ToBoolean(context.Request["Login"]);
                if (login)


问题二:其他页面差不多也是这样,因为我写了一个登录类,这个类能否获得session值来判断用户有没有登录,没有登录就会重定向到登录页面。但是有时候正常操作会突然的重定向到登录页面,求解?

谢谢大家。如果有热心人士想获得整个网站的源代码来加以研究,可以联系我!

8 个解决方案

#1


顶一个! 页面请求过慢

#2


说明登录那个方法中可能有耗时的操作,比如数据库操作,仔细查一下

#3


晕,贴这么多上来。。。。。。。。。。

#4


好复杂呀~~~

#5


设断点一步一步的查看 哪一步耗时比较长

#6


1 登录方法调试下
2 不用放那么多session,统一为一个对象放进去
3 登录页面没必要用模版引擎,登录返回失败成功就行

#7


打开浏览器的F12,然后点网络,跟踪,刷新一下页面,看看哪个地方最耗时,然后找对应的解决办法。(火狐、IE可以用F12,谷歌浏览器直接右键查看元素 然后找到网络刷新页面就可以跟踪各个请求的消耗时间了。)

#8


fonts.googleapis.com/css?family=Open+Sans:400,700,800

很可能是连接google的问题

#1


顶一个! 页面请求过慢

#2


说明登录那个方法中可能有耗时的操作,比如数据库操作,仔细查一下

#3


晕,贴这么多上来。。。。。。。。。。

#4


好复杂呀~~~

#5


设断点一步一步的查看 哪一步耗时比较长

#6


1 登录方法调试下
2 不用放那么多session,统一为一个对象放进去
3 登录页面没必要用模版引擎,登录返回失败成功就行

#7


打开浏览器的F12,然后点网络,跟踪,刷新一下页面,看看哪个地方最耗时,然后找对应的解决办法。(火狐、IE可以用F12,谷歌浏览器直接右键查看元素 然后找到网络刷新页面就可以跟踪各个请求的消耗时间了。)

#8


fonts.googleapis.com/css?family=Open+Sans:400,700,800

很可能是连接google的问题