http://www.360doc.com/content/13/0217/14/11619778_266137568.shtml
为什么使用本地缓存 对于一些比较少变化的文件,如js、css等,可以在第一次请求之后将这些文件先放在本地,在下次再去请求这些文件的时候就可以不用再去请求,直接使用本地的就可以了,直接消灭请求。这是最好的减少带宽占用、降低服务器压力的方法,同时也可以最大限度的提升页面的显示速度(直接本地取)。
查看缓存:
ie:Internet选项-设置-查看文件
Firefox:缓存采用二进制的方式存储,查看可以在地址栏中输入about:cache
缓存存在的问题既然存在了本地,那么最大的问题就是一旦服务器的文件更新了,而浏览器还在使用本地的缓存,会造成服务器端的修改不能生效。 缓存协商缓存的文件是由服务器生成,在本地保存,所以对缓存的使用必须要双方配合才能达到最好的效果,这样就引入了缓存协商。 缓存协商其实就是浏览器在请求某个文件的时候,服务器在返回时会在头部加一些额外的信息,如这个文件在多长时间内可以使用、文件的最后修改时间是什么等等,浏览器在下次再请求这个文件的就会根据之前服务器在头部加入的额外信息来对应的进行一些处理。
缓存协商的简单演示http://levit.china.alibaba.com/guarantee/listBuyerContract/list.htm 注释:左侧的是一个.htm的请求,右侧是一个js的请求
注释:在第二次请求的时候.js的请求头信息中多出了红框中的三个值
缓存相关的headerCache-control常用值:
Last-modified:在浏览器第一次请求页面的时候如果返回的header中有这一项的值,则在下次请求的头信息中会加入if-modified-since这个值,服务器端取到这个值后去判断和该文件的最后修改时间是否一样,如果一样,则直接返回304(not modified),通知浏览器可以使用本地缓存。
E-tag:在浏览器第一次请求页面的时候如果返回的header中有这一项的值,则在下次请求的头信息中会加入if-None-match这个值,服务器端取到这个值后去和这个文件生成的E-tag值进行对比,如果一样,则直接返回304(not modified),通知浏览器可以使用本地缓存。Etag默认生成规则是根据文件的inode、文件大小、文件修改时间,可以通过配置选择其中的某几项来生成、
Expires:过期时间,在这个时间之前,不会再去想服务器发任何请求,直接用本地缓存 缓存相关header的关系Cache-control会覆盖掉Expires的值,即如果同时存在cache-control:max-age=900和expires:******,则以cache-control的值为准
Etag和last-modified的值同时存在的时候,last-modified的值失效,仅判断Etag。
用户的几种不同操作? 当用户打开一个新的浏览器窗口时的失效操作提高访问速度,提升用户的体验 ? 当用户在原始浏览器窗口中单击 Enter 按钮时的失效操作 ? 当用户单击 Back 或 Forward 按钮时的失效操作 ? 当用户按 F5 键刷新页面时的失效操作 ? 用户按ctrl+F5 不同的操作对应的不同请求下面截图的情况为firefox中请求http://levit.china.alibaba.com/guarantee/listBuyerContract/list.htm这个网址的结果。
新打开浏览器窗口:未过期的缓存直接使用本地的,不向服务器发送请求
在地址栏单击回车:未过期的缓存直接使用本地的,不向服务器发送请求 (注:在ie中在地址栏单击回车行为与下面的回退一样,全部使用本地缓存,不论过不过期)
回退:不论缓存由没有过期,都使用本地缓存。可以看出来比上面少了两个请求,原因是上图中标红的请求的两个文件的缓存都已过期,但在回退时不管是否已过期,直接使用缓存。(浏览器默认对所有的文件都进行缓存,是否使用另说)。剩下的五个请求是因为这几个请求携带的参数都有一个每次都不一样的,导致本地没有与其对应的缓存(例如参数中有系统本地时间)。
F5:所有的文件都会发送请求,有缓存的进行缓存协商,没有修改的返回304使用本地缓存。
Ctrl+F5:所有文件都会发送请求,并且不进行缓存协商(cache-control:no-cache),每个文件重新返回(200)
此次整理的正文到这里就结束了,下面列出的是可能比较多关注的点:
1. Cache-control的值覆盖其他的设置 2. Etag和last-modified共存的时候以Etag为准 3. 在F5刷新的时候不论缓存过不过期都会和服务器进行缓存协商(带上Etag、last-modified之类的信息) 4. 在ctrl+F5的时候直接在浏览器单方面决定不使用缓存(直接cache-control:no-cache) 5. 在后退的时候除非显式的声明no-cache,否则都会使用缓存(不论是否过期)lfn |
相关推荐
浏览器缓存机制介绍与缓存策略剖析.pptx
浏览器缓存例子浏览器缓存例子浏览器缓存例子浏览器缓存例子浏览器缓存例子
js浏览器缓存.docjs浏览器缓存.docjs浏览器缓存.docjs浏览器缓存.doc
Loadrunner负载测试 浏览器缓存设置
jsp去除浏览器缓存
总结了浏览器缓存的原理,如何管理浏览器缓存
三星T231如何清除浏览器缓存-T231清除浏览器缓存教程.docx
浏览器缓存目录设置,配合沙盘使用,不但会提升上网速度,而且还能减少磁盘碎片
Microsoft edge 浏览器缓存改成内存虚拟盘(盘符R) Microsoft edge 浏览器缓存改成内存虚拟盘(盘符R) Microsoft edge 浏览器缓存改成内存虚拟盘(盘符R)
这个软件可以将你在用浏览器观看视频时所缓存的视频文件在缓存文件夹里面提取出来,对于一些不会下载视频或者说不想安装各种客户端、不想注册各种网站的人来说,此程序绝对是一把利器! ps:压缩包里的主程序可以...
Android之本地缓存——LruCache(内存缓存)与DiskLruCache(硬盘缓存)统一框架 [注:本内容来自网络,在此分享仅为帮助有需要的网友,如果侵犯了您的权利,麻烦联系我,我会第一时间删除,谢谢您。]
Apache Ignite——新一代数据库缓存系统,不错的书籍讲得很细致
ChromeCacheView浏览器缓存读取工具 v1.56 汉化
浏览器缓存 浏览器缓存主要可以分为两大类:客户端缓存和服务端缓存。客户端缓存,即浏览器缓存,是本文主要讨论的内容。而服务端缓存则主要包括代理服务器缓存和反向代理服务器缓存,以及广泛使用的CDN等。这些...
浏览器缓存查看及恢复小工具。这是国外的软件
1、若是UC浏览器的视频文件:Y2hlbmppbmdjb25n0 Y2hlbmppbmdjb25n1 Y2hlbmppbmdjb25n2......用此工具类(合并无加密)。 2、若是0.ts、1.ts、2.ts类型视频合并到此:...
为了提高网页的访问效率,浏览器可以在本地缓存以前访问过的页面,当浏览器再次访问那些已经缓存了的页面时,浏览器就不用再去访问远程的Web服务器了,而是直接从本地取出缓存的内容。缓存提高了浏览器的访问效率,...
如果视频被储存在浏览器的缓存文件夹中,这个软件可以帮助你从缓存文件夹中找到该视频文件并保存到其他位置。 它会自动扫描IE、基于Mozilla的网页浏览器(包括FireFox)的整个缓存文件夹,并找出当前储存在里面的所有...
浏览器缓存【2024年浏览器缓存简介】 内容概要: 这篇博客为网络技术初学者提供了一个全面的理解浏览器缓存的知识。通过通俗易懂的语言,本博客介绍了浏览器缓存的工作原理,HTTP缓存控制字段,缓存策略的应用,以及...
安卓Android源码——安卓Android 图片缓存、加载器.rar