使用浏览器Cache和http状态码304实现的客户端缓存
来源:互联网 发布:淘宝买家信用在哪里看 编辑:程序博客网 时间:2024/05/03 22:01
通常来讲,Cache设置有两种方式:第一种是在HTML内容的head之中设置:
<meta http-equiv="Expires" CONTENT="0"> //这一句设置文件的过期时间为0秒
<meta http-equiv="Cache-Control" CONTENT="no-cache"> //这一句设置文件禁止被缓存
第二种是通过HTTP Head来设置,例如在.NET(C#)之中:
Response.Cache.SetExpires(time);//设置文件的过期时间为当前的时间。
我个人比较喜欢通过HTTP HEAD这种方式来设置,因为我觉得这不属于HTML本身的内容,当然,如果是静态文件,就只能通过html head来设置了,在我的网站"地名信息系统"之中,我设置了每个HTML页面在7天后失效,因为该HTML是自动生成的。
在上面的Cache介绍之中,提到了浏览器在存在缓存的时候不去服务器取相关的内容,可是仅仅这样设置,好像有时候这些浏览器还是去服务器请求,有些时候的请求很合理,例如用户点击“刷新”按钮的时候,有些时候我也不知道为什么,因此,我在系统之中进一步使用了HTTP状态码。
HTTP状态码有很多用户不愿意去了解,其实这是很重要的内容,至于怎么个重要法,以及详细的使用说明请大家去参考相关的文档,我这里举几个例子:
1.有的用户在网站页面不存在的时候显示了自己定义的页面,可是忘记使用404状态码,这样浏览器就不知道它下载的内容究竟是正常内容还是页面不存在的提示,可能用户能从页面内容上分辨出来,可是搜索引擎的机器人不会,因此就可能会被搜索引擎列入“无法检索”的黑名单。
2.在页面转向的时候不使用301或者302的状态码,造成搜索引擎不知道叶面已经被转向。
我专门要说的304是一个用处和Cache相同的东西,这个状态码的含义是“服务器端没有更新”,也就是说客户端的文件版本是最新的,他的用法是这样的:
1.当用户首次请求该文件的时候,通过HTTP HEAD的Last-Modified字段将该文件的最后修改日期发送到客户端,让客户端知道该文件的版本,例如:
Last-Modified: Tue, 08 Apr 2008 14:48:05 GMT
2.在浏览器再次请求该文件的时候,会自动将该时间作为请求的HTTP HEAD的If-Modified-Since字段内容(有时候根据浏览器的不同,可能会用逗号隔开附加上文件的字节数大小),例如:
If-Modified-Since: Tue, 08 Apr 2008 14:48:05 GMT
3.服务端根据If-Modified-Since字段的内容(如果存在该字段)来判断客户端的文件是否已经过期,如果已经过期,则重新返回新的文件,如果没有,则只需要返回304状态码,就可结束输出,这样代表浏览器端的文件版本是最新的,不需要返回文件内容。
要知道,服务器返回一个304的时间要比返回整个文件的时间要小得多,性能损耗和网络占用也小得多。
Cache和304技术有一定的重复,我选择Cache和304技术一起使用是因为单用Cache好像浏览器有时候还是去取最新内容(尤其是用户点击刷新按钮的时候),而单独使用304则在浏览器向服务器询问的过程还是会占用一定的性能和时间。这两种技术结合起来使用是刚刚好的。
- 使用浏览器Cache和http状态码304实现的客户端缓存
- HTTP 缓存概念和强迫浏览器使用缓存的示例
- 理解HTTP缓存和304状态码
- 浏览器 http 200(from cache) 和 304
- Servlet使用Http请求头控制客户端浏览器缓存
- application和cache实现缓存的差异
- application和cache实现缓存的差异
- application和cache实现缓存的差异
- HTTP 304客户端缓存优化的神奇作用和用法
- HTTP 304客户端缓存优化的神奇作用和用法
- 有关客户端浏览器缓存的HTTP头介绍
- 有关客户端浏览器缓存的Http头介绍
- 有关客户端浏览器缓存的Http头介绍
- PHP相关系列 - HTTP 缓存概念和强迫浏览器使用缓存的示例
- 缓存的使用Cache
- http协议:Web前端-HTTP Cache-control/浏览器缓存
- IE,FF客户端浏览器缓存机制 && 服务器设置的expires, Cache-Control,no-cache,no-store机制
- IE,FF客户端浏览器缓存机制and服务器设置的expires, Cache-Control,no-cache,no-store机制
- 使用MSCS建立SQL Server集群
- 日常上网要注意的事项
- linux下安装mysql
- MMU代码分析(作者:wogoyixikexie@gliet)
- JAVAWEB应用的policy安全配置值得深思
- 使用浏览器Cache和http状态码304实现的客户端缓存
- web常用性能指标
- 一个女孩写给女孩的话-不管是男是女看看吧,看看我们做了里面的多少
- Template Usage Scenario 3
- 1.4号学习
- Ajax Control Toolkit 34个服务器端控件(2)
- SQL Server数据库的集群设计
- Ajax Control Toolkit 34个服务器端控件(3)
- 深入对C#中委托的理解及应用