【http】使用浏览器Cache和http状态码304实现的客户端缓存
2012-09-19 17:22
417 查看
Cache就是浏览器的缓存技术,大家肯定不陌生,浏览器在每次加载一个文件的时候,都要去自己的缓存文件夹里面去查找是否存在可用缓存,如果存在,则不 再去服务器下载而直接使用本地内容,这是一个很好的节省服务器性能和流量的方式,在网站不做任何设置的情况下,浏览器会根据用户的设置来确定是否使用缓 存,可见浏览器的“Internet选项”的“浏览历史纪录”的“设置”部分。
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则在浏览器向服务器询问的过程还是会占用一定的性能和时间。这两种技术结合起来使用是刚刚好的。
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则在浏览器向服务器询问的过程还是会占用一定的性能和时间。这两种技术结合起来使用是刚刚好的。
相关文章推荐
- Step1数据系统技术(3.使用浏览器Cache和http状态码304实现的客户端缓存)
- 使用浏览器Cache和http状态码304实现的客户端缓存
- 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- iPhone开发笔记(16)使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- iPhone开发笔记(16)使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- apache httpclient cache 实现可缓存的http客户端
- 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- iPhone开发笔记(16)使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- 缓存篇(Cache)~第二回 使用static静态成员实现服务器端缓存(导航面包屑)~续
- 王振威 在 Spring 3.1 中使用 @Cacheable 实现缓存
- jsp中如何避免客户端浏览器在刷新时,使用缓存的数据
- 使用HttpHandler+Cache实现站点访问量的统计
- 使用HttpURLConnection实现在android客户端和服务器之间传递对象
- 毕加索的艺术——Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选
- asp.net 客户端浏览器缓存的Http头介绍
- 浏览器缓存相关的Http头介绍:Expires,Cache-Control,Last-Modified,ETag
- ASIHTTPRequest和ASIDownloadCache实现本地缓存