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
存在于Response Headers中,指定所有缓存机制在整个请求/响应链中必须服从的指令。
用来控制缓存的失效日期。
在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是客户端请求的资源,同时有一个Last-Modified的属性标记此文件在服务器端最后被修改的时间。
客户端第二次请求此URL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头,询问该时间之后文件是否有被修改过。
如果服务器端的资源没有变化,则自动返回 HTTP 304(Not Changed)状态码,内容为空,这样就节省了传输数据量。
ETag是一个可以与Web资源关联的记号(token),用于标示URL对象是否改变。
当第一次访问某个URL资源时,服务器会产生一个Etag报头;当第二次请求此URL资源时,浏览器会想服务器传送If-None-Match,询问该文件是否发生了更改。
首先浏览器会检查资源的expires/cache-control,判断当前资源是否过期;然后检查资源的last-modified(if-modified-since)/etag(if-none-match),判断服务器上的资源是否发生更改,如果没有发生更改,则继续使用本地缓存的资源304;如果服务器资源发生了更改,则请求更改后的资源。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Cache-Control (强缓存)
存在于Response Headers中,指定所有缓存机制在整个请求/响应链中必须服从的指令。
对应的Status Code:200(from memory cache)
Expires (强缓存)
用来控制缓存的失效日期。
Last-Modefied (协商缓存)
在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是客户端请求的资源,同时有一个Last-Modified的属性标记此文件在服务器端最后被修改的时间。
客户端第二次请求此URL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头,询问该时间之后文件是否有被修改过。
如果服务器端的资源没有变化,则自动返回 HTTP 304(Not Changed)状态码,内容为空,这样就节省了传输数据量。
Etag (协商缓存)
ETag是一个可以与Web资源关联的记号(token),用于标示URL对象是否改变。
当第一次访问某个URL资源时,服务器会产生一个Etag报头;当第二次请求此URL资源时,浏览器会想服务器传送If-None-Match,询问该文件是否发生了更改。
分级缓存策略
首先浏览器会检查资源的expires/cache-control,判断当前资源是否过期;然后检查资源的last-modified(if-modified-since)/etag(if-none-match),判断服务器上的资源是否发生更改,如果没有发生更改,则继续使用本地缓存的资源304;如果服务器资源发生了更改,则请求更改后的资源。
缓存流程图
The text was updated successfully, but these errors were encountered: