zoukankan      html  css  js  c++  java
  • 网站首次访问速度慢 解决方案

      大家都知道,网站在第一次启动的时候首先需要对网站进行编译,所以首次访问会有一定的时间消耗。但随着项目功能模块的增加,网站的启动速度越来越慢,甚至到现在需要将近一分钟,令人难以接受,特别是在开发调试下,更是大大降低了开发效率。在百度和谷歌上面搜索过相关的问题,也没有找到答案,大多数人都说这是正常的,甚至有人还怪到MS的头上来。

      没办法,只能往MS的编译方向上找了,这时,刚好看到了Artech的《深入剖析ASP.NET的编译原理》,总算找到原因了,编译过程如下:

    • Step1:当ASP.NET收到对于某个Page的Request,根据这个request对应的Url试着找到该page对应的Preservation File,如果没有找到,重新编译Page所在目录下的所有需要编译的文件,同时生成一些额外的文件,包括Preservation File。
    • Step2:然后解析这个Preservation File,通过hash和filehash判断文件自身或者是Dependent File是否在上一次编译之后进行过任何的修改,如果是的,则重新编译。然后重新执行Step2。
    • Step3:通过Preservation File 的assembly attribute Load对应的assembly(如果Assembly还没有被Load的话),通过type获知对应的aspx type,然后借助FastObjectFactory的对应的Create_ASP_XXX创建这个type。这个新创建的对象就是我们需要的Http Handler,在之上执行相应的操作把结果Response到客户端。

      网站在首次收到客户端对某个页面的请求,将会对该页面所在目录下所有需要编译的文件进行编译,而刚好我的网站并没有对功能模块进行分目录,也就相当于对整个网站的页面进行一次编译,速度当然难以接受。找到原因自然就好办了,以模块为单位进行分目录。以下是分目录前后首次访问所耗的时间:

    未分目录

    已分目录

    第一次

    33s

    12s

    第二次

    39s

    9s

    第三次

    34s

    9s

      从数据上可以看到,效果还是相当的明显,而且数据是在开发模式上做的测试,发布到生产机器上还能进一步减少启动时间。

  • 相关阅读:
    java 生成12位随机数,解决The literal 9999999999999 of type int is out of range 问题
    使用loadrunner 12 手动关联
    解析xml文件,修改Jenkins的配置
    自定义报告,用Java写一个html文件
    解决Jenkins的错误“The Server rejected the connection: None of the protocols were accepted”
    selenium项目--读取测试用例
    header("Location:login.php")
    详细设计说明书(转)
    Visual EmbedLinux Tools:让vs支持嵌入式Linux开发(转)
    phpstorm集成phpunit(转)
  • 原文地址:https://www.cnblogs.com/gudieaofei/p/1969146.html
Copyright © 2011-2022 走看看