We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
浏览器中的缓存作用分为两种情况,一种是需要发送HTTP请求,一种是不需要发送。
发送http请求前,通过Expires(HTTP/1.0)、Cache-Control(HTTP/1.1)来检查抢缓存;当Expires和Cache-Control同时存在的时候,Cache-Control会优先考虑
Expires: Wed, 22 Nov 2019 08:41:00 GMT //表示资源在2019年11月22号8点41分过期,过期了就得向服务端发请求。
问题:服务器的时间和浏览器的时间可能并不一致,那服务器返回的这个过期时间可能就是不准确的。所以后面HTTP/1.1推出了Cache-Control;
Cache-Control:max-age=3600 //代表这个响应返回后在 3600 秒,也就是一个小时之内可以直接使用缓存。
当资源缓存时间超时了,也就是强缓存失效了就进入——协商缓存了
强缓存失效之后,浏览器在请求头中携带相应的缓存tag来向服务器发请求,由服务器根据这个tag,来决定是否使用缓存,这就是协商缓存。
对浏览器的缓存机制来做个简要的总结:
首先通过 Cache-Control 验证强缓存是否可用
The text was updated successfully, but these errors were encountered:
No branches or pull requests
强缓存
发送http请求前,通过Expires(HTTP/1.0)、Cache-Control(HTTP/1.1)来检查抢缓存;当Expires和Cache-Control同时存在的时候,Cache-Control会优先考虑
Expires即过期时间,存在于服务端返回的响应头中,告诉浏览器在这个过期时间之前可以直接从缓存里面获取数据,无需再次请求
问题:服务器的时间和浏览器的时间可能并不一致,那服务器返回的这个过期时间可能就是不准确的。所以后面HTTP/1.1推出了Cache-Control;
当资源缓存时间超时了,也就是强缓存失效了就进入——协商缓存了
协商缓存
强缓存失效之后,浏览器在请求头中携带相应的缓存tag来向服务器发请求,由服务器根据这个tag,来决定是否使用缓存,这就是协商缓存。
即最后修改时间。在浏览器第一次给服务器发送请求后,服务器会在响应头中加上这个字段。
ETag 是服务器根据当前文件的内容,给文件生成的唯一标识,只要里面的内容有改动,这个值就会变。服务器通过响应头把这个值给浏览器。
缓存位置
总结
对浏览器的缓存机制来做个简要的总结:
首先通过 Cache-Control 验证强缓存是否可用
参考
The text was updated successfully, but these errors were encountered: