Nginx系列7:expires配置web端静态资源缓存

2019-04-04  本文已影响0人  joyitsai

通常在浏览器端会有自己的缓存机制,通过 HTTP 协议定义的缓存机制(如:Expires,Cache-Control 等)来实现的。当客户端有了缓存后在第二次发出同样的请求时浏览器会先到自己的缓存中去找,以减少与服务器的交互来降低服务器的消耗、同时提高浏览器的响应速度。

浏览器在无缓存下访问

浏览器第一次访问要请求的目标内容,直接向目标服务器发出请求,目标服务器响应请求。

浏览器已有缓存

当浏览器发现本地有缓存时他会对缓存进行校验,校验该内容的缓存周期、是否过期,具体的校验机制如下:

注意:在实际应用中 Etag 的优先级更高,因为 Last-Modified 他的时间戳只能精确到秒,不可靠。

需要注意的是市面上大多数浏览器都会在请求头中加了 Cache-Control:max-age=0 使浏览器每次请求都会跟服务器进行交互,但他们传输的数据量非常小。

开启缓存

要对内容开启缓存那么就需要在响应头部中添加 Cache-controlExpirse 头。
在 Nginx 中使用 expires 指令来进行配置,这个指令包含在 http_headers_module 中。

expires 指令配置语法
expires [modified] time;

time 表示一个时间周期, 如 10s 表示 10 秒,1m 为一分钟,1h 为一小时,1d 为一天;Expires 的值为系统当前时间加所设定的 time 值; 可以在 http, server, location, if in location 中配置。

示例

将站点中所有图片缓存周期设置为一天:

location ~ *\.(gif|jpg|jpeg|png|bmp|ico)$ {
    expires 1d;
}
上一篇下一篇

猜你喜欢

热点阅读