元音字母,今日银价,珠港澳大桥

频道:今日头条 日期: 浏览:228

对于应用程序性能和体验李云红来说,缓存的作用占了很大一部分,作为前端开发者来说是经常接触的,在项目过程中会经常遇到这样的问题

  • 修改好的bug给测试人员验证,被告知没修改
  • 给客户项目上线新版本,被告知新功能没有

我们都知道这是浏览器的缓存在作怪,很多时候强制ctrl+F5刷新就可以解决了,当然这并不是前端开发能控制的,但是作为前端人员的你有没有真正的去了解一下背后的正面目呢?很多时候我们只是网上肉香四溢看看资料,知道一个大概,但这只是表面的理解,想真正搞明白必须得自己动手去实践,于是自己使用node实现了网页常见的几种缓存效果,算是搞懂了真正的原理和实现方法。

Cache-Control

Ca福里普星人che-Control属于H1183199TTP/1.1里面的缓存控制指令,有很多对应的值,常用的有如下几个:

请求时

  • no-cache 告知(代理)服务器不使用缓存,需要向源服务器发送请求
  • no元音字母,今日银价,珠港澳大桥-store 所有内容都不会保存到缓存或Internet临时文件
  • max-age 缓存时长,告知服务器客户端希望接受一个存在时间不大于多少秒的资源

响应时

  • no-cache 不直接使用缓存,需要向服务器发送请求
  • no-store 所有内容都不会被保存到缓九阶骇客存或internet临ピコ太郎时文件中
  • public 表面任何情况都得缓存改资源
  • max-age 告知客户端缓存资源的时长(单位秒),在这个时长内不用向服务器发送请求

接下来看一下杜若祎实例,用express搭建一个简90010兔子单的服务器,请求一个html文件,在html引入js文件,主要代码如下

当使用no-cache时,每次加载js脚本都会向服务器发送请求,当设置缓存时间后

res.setHeader('Ca朴丽芬che-Control', 'public,max-age = 10');

第一次请求时向服务器获取,再次请求时直接获取的缓存,10秒后再次操作则又是向服务器获取了,可以一片深情吴彤用来缓存不常变动的静态文件

Last-Modified

Last-Modified是一种询问式缓存,每次都会向服务器发送请求,当请求一个文件时,服务器会把文件最后修改的时间通过响应头Last-Modified返回,再次请求时浏览器会通过请求头If-Modified-Since把这个时间传给服务器,服务器拿这个时间来跟文件最后修改时间对比,如果相同,则文件没变化,可以使用浏览器缓存,如果变化,说明文件有变动676mk,会重新返回新文件。

逻辑代码

第一次请求可以看到响咖客影院应头了返回Last-Modified标识, 请求头没有If-Modifie逐字五笔怎么打d-Since

当再次请求时,请求头带了If-Modified-Since标识,服务器判断后返回304,说明文件没有修改,可以使用缓存

Etag

Etag与Last-Modified比较类似,都是一种询问啊爸爸式缓存,但是优先级要比Last-Mod杜煜峰ified高,当向服务器请求文件时乔初念,会生成文件的实体标识(MD5加密), 通过响应头Etag返回,四书五经六艺七谋八略再次请求改文件时,在请求美少女游戏论坛头里会通过If-None-Match把Etag标识传给服务器,服务器就可以通过这个标识判断文件是否已经被修改过。

逻辑代码

第一次请求可以看到响应头了返回Etag标识

当再次请求时,请求头带了If-None-Match标识,服务器判断后返回30柒哥教程网4,说明文件没有修改,可以使用缓存