手机版

ASP.NET性能优化降低请�

时间:2021-10-17 来源:互联网 编辑:宝哥软件园 浏览:

这种机制的性能损失是服务器的ASP.NET仍然需要接收和处理请求。本文描述的机制是让浏览器决定是否读取缓存,从而完全消除对服务器的请求。1.减少静态页面请求为了让静态页面支持这个需求,我们需要在http头中使用Cache-Control: max-age。值得注意的是,Cache-Control是HTTP/1.1协议下的一个标识符,是HTTP/1.0协议中Expires的升级。为了使静态页面支持缓存控制,一种方案是在IIS中设置它。如下,我右键单击需要静态缓存的页面或文件夹-属性:image

在这里,我将到期时间设置为1分钟。然后,我们观察到IE通过HttpWatch(第一个请求)请求这个页面,得到了如下HTTP头:image

可以看到,获得的http头已经有了项目Cache-Control: max-age=60。现在,我需要在1分钟内重复请求这个静态页面,请求的行为可以通过以下方式实现。F5代表浏览器刷新,对上次修改有效,但对缓存控制无效。单击“开始”或将光标移到地址栏中,然后按回车键,这对缓存控制有效。

注意,我用图中的红字和红框来标记:第一个请求返回状态码200,很明显我得到了所有的文本,545字节。F5刷新对上次修改有效。它允许服务器判断是否需要读取缓存。因此,仍然有请求和返回数据,我们可以看到分别是352和239。状态代码是304。单击“转到”或将光标移到地址栏中,然后输入对缓存控制有效。是浏览器决定是否读取缓存本身。由于在1分钟之内,浏览器不会向WEB服务器发送请求。我们可以看到发送和接收的数据都是0。没有交互,所以没有代码。Ctrl f5相当于强制刷新,所以状态码为200OK,返回所有文本数据。我们可以看到它与第一个请求相同,都是545字节。(题外话,上图中favicon.ico有一个404,所以我们应该始终为网站提供favicon.ico,这是你可以设置的网站LOGO,否则有些浏览器会反复请求LOGO,也会带来性能损失)。经过上面的处理,我们可以看到,和前面的相比,我们进一步减少了HTTP请求,提高了效率,因为总有一些用户会通过“前往”或者将光标移动到地址栏,然后进入车内来请求数据。我们可以根据实际需求设置特定页面的缓存时间。1.1通过web.config设置静态文件缓存在上例中,我们通过IIS设置静态文件缓存,也可以在web.config中设置,如下(配置下):复制代码如下:system。webserver验证validate integrated mode configuration=' false '/modules runall managed modules for all requests=' true '/static content client cache cacheControlMode=' UseMaxAge ' cacheControlMaxAge=' 0.003:60 '/关闭static content/system . web server 1.2中的静态文件缓存也可以关闭单个文件夹或文件的缓存。设置如下(配置下):复制代码如下:位置路径=' test2.htm '系统。web server静态内容客户端缓存控制模式=' disable cache '//Static content/system . web server/location 2:减少动态页面请求通过分析上面的静态页面或资源,我们知道我们可以对动态页面请求采用同样的策略。我们需要自己编写代码来实现这一点:复制代码如下: protected void page _ load(object sender,event args e){//点击“Go”或将光标移动到地址栏中,按回车键,即此。response.add本文中描述的标头(' cache-control ',' max-age=60 ');//真正用于处理F5刷新,即对Last-Modified this . response . addheader(' Last-Modified ',datetime.now.tostring ('u ',datetime formatinfo . inviant info))有效;日期时间IfModifiedSince自;if (DateTime。特里帕斯(这个。request . headers . get(' If-Modified-after '),out If Modified after(){ If((DateTime)。现在-如果修改自。AddHours(8))。60秒){回应。状态='304未修改';回应。StatusCode=304返回;}}}结果如下:image

结果与我们使用的静态页面完全一致。2.1动态文件也可以使用配置文件在配置文件中批量配置。以下是复制代码:system.web …缓存输出缓存设置输出缓存配置文件添加名称=' cache 1 ' duration=' 60 ' location=' client ' varybyparam=' none '/output cache profiles/output cache settings/cache/system . web然后在页面前台引用:复制代码如下:% @ output cache cache profile=' cache 1 ' %本文的代码比较简单,关键是理解其中包含的思想,就是把浏览器当成一个注意:在本文中,我使用了AddHeader来添加http头。在前一篇文章中,一位朋友提议使用Response。Cache.SetMaxAge方法。需要提醒的是,使用此方法会导致304状态丢失。深层次的原因不再详细研究。

版权声明:ASP.NET性能优化降低请�是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。