巧用etag实现304提高页面访问速度

来源:百度文库 编辑:神马文学网 时间:2024/04/26 18:53:32

巧用etag实现304提高页面访问速度  

我们了解HTTP协议知道,304 是浏览器向服务器咨询内容是否有更新用的。朝这个方向去考虑,我打算让侧边栏实现304效果,只有服务器有更新才获取数据,没有更新让浏览器总是到本地的缓存去获取数据,以达到速度的提升。

看看我们的ASPX是如何实现304的

c# 代码
  1. <%   
  2.     string clientEtag="";
  3.     string  serverEtag   ="";
  4.     serverEtag = "889999898880000999"  //获取或生成新etag函数  返回值
  5.     clientEtag = Request.ServerVariables("HTTP_IF_NONE_MATCH")          //获取客户端etag
  6.   
  7.    
  8.     if serverEtag = clientEtag 
  9.         Response.StatusCode=304;
  10.         Response.Status = "304 Not Modified"  ;
  11. }
  12.     else   
  13. {
  14.       Response.AddHeader "ETag", getEtag   
  15.       Response.Wirte("content")
  16.      }
  17. %>  

服务端获取到客户端的etag后,和服务器的etag进行对比。如果相等说明客户端有本地缓存,于是返回304给客户端,否则加载侧边栏的数据。当然这个判断的消耗是非常低的,我们甚至不用访问服务器,只要访问服务器里的一个缓存的etag即可