与浏览器缓存协商的区别及方法总结(一)

日期: 栏目:文章分享 浏览:813 评论:0

第1章 DNS与浏览器缓存

1.1 浏览器DNS缓存

1.1.1 浏览器

://net-/#dns

c63bb7ed3d63d0b74e67523a185f3440.png

1.1.2 浏览器

about:

7bb4498004170f71b59e97e83ec327d1.png

1.1.3 DNS预获取

预先将url进行域名解析,将解析结果保存下来加快用户的访问。

63f76ffc421c09e8280dd4eeabb11254.png

1.2 浏览器缓存

1.2.1 浏览器缓存

10258f451396662610c88f85e058d121.png

1.2.2 浏览器和服务器之间基于Last-缓存协商

浏览器向服务器发送If--Since字段,若发送的时间与服务器上的last-时间匹配,则服务器不再向客户端发送数据,浏览器使用本地的缓存打开页面,此时的状态码为304。

1b806d2b05d9f6dc782ddf448252b2a8.png

1.2.3 浏览器和服务器之间基于Etag缓存协商

通过算法(根据服务器不同算法也不同,如nginx/等)生成标签,每次访问时比对标签,标签相同时则服务器不向客户端传输数据,浏览器使用自己的本地缓存显示页面,此时状态码也为304。这种方式主要用于Last-经常变化但是内容却没有变化的情况(实际的使用比较少)。

5f9c3aad550a2b3a32dea030688e6ca8.png

1.2.4 浏览器和服务器之间基于缓存协商

通过Cache-:max-age设置缓存过期时间长度谷歌浏览器清除DNS缓存的方法,显示过期实际时间,到期后彻底消灭连接,此时状态码为200。

651f0095f96ffd86ac828c6a0f0f0979.png

1.2.5 浏览器刷新

1.2.5.1 在地址栏中输入网址后按回车或点击转到按钮

浏览器会对所有没有过期的内容直接使用本地缓存,这个时候Last-、Etag、和均不会受刷新的影响。

1.2.5.2 按F5或浏览器刷新按钮

浏览器会在请求中附加必要的缓存协商,这个时候Last-、ETag就要受影响,要发起缓存协商的动作,但是对无效。

1.2.5.3 按Ctrl+F5或按Ctrl并点击刷新按钮

每次浏览器都发起一个全新的请求,不使用任何缓存。

1.2.6 不使用浏览器缓存

1.2.7 设置网站静态文件时间

图片文件:每次更新都会生成新的文件名,此时时间可以设置长时间,如1年

JS/CSS文件:根据业务类型设置时间,若经常变化则时间设置短一些谷歌浏览器清除DNS缓存的方法,相反则设置的长一些

ICO文件:不需要设置,浏览器会自动强制设置缓存。

备注:由于现在很多浏览器默认回去请求网站小图标ico文件,此时网站若没有ico文件则会出现许多404错误,此时可以在服务器端编写规则,设置ico为 off,禁止浏览器访问ico文件。

标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。发布前请先查看评论规则:点我查看