初探浏览器缓存实现原理-提高性能.doc_第1页
初探浏览器缓存实现原理-提高性能.doc_第2页
初探浏览器缓存实现原理-提高性能.doc_第3页
初探浏览器缓存实现原理-提高性能.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

初探浏览器缓存实现原理-提高性能浏览器缓存将文件保存在客户端,好的缓存策略可以减少对网络带宽的占用,可以提高访问速度,提高用户的体验,还可以减轻服务器的负担。因此我们有必要了解它的实现原理,用来提高网站的性能。当一个客户端请求web服务器, 请求的内容可以从以下几个地方获取:服务器、浏览器缓存中或缓存服务器中。这取决于服务器端输出的页面信息。页面文件有三种缓存状态。1.最新的:选择不缓存页面,每次请求时都从服务器获取最新的内容。2.未过期的:在给定的时间内缓存,如果用户刷新或页面过期则去服务器请求,否则将读取本地的缓存,这样可以提高浏览速度。3.过期的:也就是陈旧的页面,当请求这个页面时,必须进行重新获取。页面的缓存状态是由http header决定的,一个浏览器请求信息,一个是服务器响应信息。主要包括Pragma: no-cache、Cache-Control、 Expires、 Last-Modified、If-Modified-Since。其中Pragma: no-cache由HTTP/1.0规定,Cache-Control由HTTP/1.1规定。Cache-Control的主要参数Cache-Control: private/public Public 响应会被缓存,并且在多用户间共享。 Private 响应只能够作为私有的缓存,不能再用户间共享。Cache-Control: no-cache:不进行缓存Cache-Control: max-age=x:缓存时间 以秒为单位Cache-Control: must-revalidate:如果页面是过期的 则去服务器进行获取。Expires:显示的设置页面过期时间Last-Modified:请求对象最后一次的修改时间 用来判断缓存是否过期 通常由文件的时间信息产生If-Modified-Since :客户端发送请求附带的信息 指浏览器缓存请求对象的最后修改日期 用来和服务器端的Last-Modified做比较如IE的设置里面有四种方式(如图)的每次访问页面检查,用户使用重新加载或超过了过期日期,浏览器就会认为这个页面是陈旧的(它将发送附加一个If- Modified-Since的信息. 如果页面没有改变,服务器端响应一个304状态 Not Modified,而不发送整个页面,这样就会很快,但服务器必须要生成有效的Last-Modified headers且服务器时间必须是有效的。一个不进行缓存的服务器端响应HTTP/1.0 200 OKContent-Type: text/htmlContent-Length: 19662Pragma: no-cacheCache-Control: no-cacheServer: Roxen/2.1.185Accept-Ranges: bytesExpires: Wed, 03 Jan 2001 00:18:55 GMT有时候仅仅设置Pragma: no-cache Cache-Control: no-cache 还是不保险,需要将过期时间设置成过去的时间就确保了对象不被缓存。一个允许缓存的服务器端响应HTTP/1.1 200 OKDate: Tue, 13 Feb 2001 14:50:31 GMTServer: Apache/1.3.12Cache-Control: max-age=43200Expires: Wed, 14 Feb 2001 02:50:31 GMTLast-Modified: Sun, 03 Dec 2000 23:52:56 GMTETag: 1cbf3-dfd-3a2adcd8Accept-Ranges: bytesContent-Length: 3581Connection: closeContent-Type: text/htmlCache-Control: max-age=43200 表示缓存12个小时我们来看一个浏览器缓存的具体例子第一次请求文件Request:GET /file.html HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-comet, */*Accept-Language: en-usAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)Host: 01Connection: Keep-AliveResponse:HTTP/1.1 200 OKDate: Tue, 13 Feb 2001 20:00:22 GMTServer: ApacheCache-Control: max-age=604800Last-Modified: Wed, 29 Nov 2000 15:28:38 GMTETag: 1df-28f1-3a2520a6Accept-Ranges: bytesContent-Length: 10481Keep-Alive: timeout=5, max=100Connection: Keep-AliveContent-Type: text/html这里返回了Last-Modified和ETag,这两个信息就是用来以后比较当前浏览器缓存的文件是否和服务器端文件一致,如果不一直就获取最新,一直则读取本地缓存。第二次请求Request:GET /file.html HTTP/1.1Accept: */*Accept-Language: en-usAccept-Encoding: gzip, deflateIf-Modified-Since: Wed, 29 Nov 2000 15:28:38 GMTIf-None-Match: 1df-28f1-3a2520a6User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)Host: 01Connection: Keep-AliveResponse:HTTP/1.1 304 Not ModifiedDate: Tue, 13 Feb 2001 20:01:07 GMTServer: ApacheConnection: Keep-AliveKeep-Alive: timeout=5, max=100ETag: 1df-28f1-3a2520a6Cache-Control: max-age=604800请求中的If-None-Match信息就是第一次响应的ETag,用来验证和当前响应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论