在 Nginx 中,可以使用 expires
指令来设置缓存的过期时间,从而控制客户端(浏览器)和代理服务器对于资源的缓存时间。这个指令可以用于 location
块内,以针对特定的请求路径或者文件类型设置缓存过期时间。
location /static {
# 设置静态资源的缓存过期时间为1个小时
expires 1h;
}
在上面的配置示例中,所有以 /static 开头的请求路径将被设置为缓存过期时间为1小时。
找到你的静态资源文件夹,把static
修改为对应文件夹的名字。
location ~* \.(js|css|png|jpg|jpeg|gif)$ {
# 设置指定类型的文件缓存过期时间为7天
expires 7d;
}
在上面的配置中,所有以 .js、.css、.png、.jpg、.jpeg、.gif 结尾的请求路径将被设置为缓存过期时间为7天。
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html)$ {
#禁止缓存,每次都从服务器请求
#add_header Cache-Control no-store;
#设置过期时间60秒,60秒过后向服务器重新请求数据
add_header Cache-Control max-age=60;
}
Cache-Control:这个头部字段允许你指定资源在客户端缓存的最大时间,使用 max-age 参数来指定时间,以秒为单位。例如,Cache-Control: max-age=3600 表示资源在缓存中可以保留1小时。
Expires:这个头部字段是一个绝对时间,表示资源的过期时间。服务器返回的时间是 GMT 时间。当指定了 Cache-Control 头部时,Expires 会被忽略。
{/tabs-pane}
{tabs-pane label="协商缓存(Last-Modified 和 ETag)"}
协商缓存是指浏览器向服务器发送请求,服务器通过检查资源是否有更新来决定是否返回资源。如果资源没有变化,服务器会返回一个 304 Not Modified 响应,浏览器可以继续使用缓存的资源。主要使用的 HTTP 头部字段是 Last-Modified 和 ETag。
Last-Modified:服务器在响应头中返回资源的最后修改时间。浏览器在下次请求时,会将上一次响应的 Last-Modified 值发送给服务器,服务器会将资源的最新修改时间与该值进行比较。如果资源的修改时间较新,服务器返回完整资源;如果相同,返回 304 响应,浏览器使用缓存。
ETag:服务器返回一个唯一的标识符(通常是哈希值或版本号),代表资源的当前状态。浏览器在请求时将上一次响应的 ETag 值发送给服务器,服务器根据资源的状态判断是否返回资源或 304 响应。
{/tabs-pane}
评语 (2)