巧用etag实现304提高blog静态页面侧边栏

PJBlog3静态化以来受到大家的关注,同时也得到了大家的不少bug返回和建议。目前大部分明显的bug已经修正了,其中分享一下 静态化后 侧边栏慢的解决呵呵。经过试验,目前的侧边栏已经得到很大的改观了。

其实侧边栏的优化思路很简单,首先,静态页面里的侧边栏并不是全静态的,它能够实现一些简单的动态效果,例如登录框的表现,评论,访问数量等等。如果侧边栏每次都去访问服务器这样的速度肯定在,高速的静态页面下表现很慢。 最好的解决办法能够让浏览器知道如何才去获取到新的数据。

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

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

ASP/Visual Basic代码
  1. <%   
  2.     Dim id, tKey, clientEtag, serverEtag   
  3.     id = 0   
  4.     serverEtag = getEtag   
  5.     clientEtag = Request.ServerVariables("HTTP_IF_NONE_MATCH")   
  6.        
  7.   
  8.     Response.AddHeader "ETag", getEtag   
  9.     Response.ContentType = "application/x-javascript"    
  10.   
  11.     if serverEtag = clientEtag then   
  12.         Response.Status = "304 Not Modified"  
  13.     else   
  14.         Server.Transfer "static_js_mod.asp"  
  15.     end if   
  16. %>  

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




评论: 40 | 引用: 0 | 查看次数: -
slowss[2008-07-19 05:55 PM | del]
好像现在的侧边不是所说的这么回事哦,静态页下自己新建的模块不显示,插件模块也不显示。。
177672495[2008-07-16 01:22 AM | del]
还可以了。。。



http://www.ouou8.cn

偶偶吧电脑知识网
22wwsd[2008-07-16 01:16 AM | del]
我来看看!!支持你一下!!




个人签名:
-----------------------------
http://www.ouou8.cn/girl
s[2008-07-13 05:11 PM | del]
sfdf
freetor[2008-07-13 00:11 AM | del]
嗯,想法很好,一向是對整體頁面判斷etag,忽略了對動態js判斷。
fivecarat[2008-07-11 06:40 PM | del]
支持pjblog3 http://www.5kela.cn
blog[2008-07-11 12:21 AM | del]
期待新版本能更好啊
老Q[2008-07-11 09:38 AM | del]
加油,我们都看好你哦!!
我的博客Http://mr-q.net.cn
用的ZBLOG,等PJ3出来马上用PJ3.嘿嘿!!
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.