文章内容

2022/5/7 18:32:32,作 者: 黄兵

Nginx 如何设置浏览器缓存

最近将有一些服务器变成 CDN 服务器,主要是存储一些静态文件,但是在网站请求 CDN 资源的时候,浏览器不会缓存,每次都会请求,这样无疑严重影响网站加载速度,于是据需要浏览器缓存。

下面是在 Nginx 中如何设置浏览器缓存。

1、我们使用如下命令修改 Nginx 配置文件:

sudo vi /etc/nginx/sites-available/default

2、增加如下内容:

. . .
# Default server configuration
#

# Expires map
map $sent_http_content_type $expires {
    default                    off;
    text/html                  epoch;
    text/css                   max;
    application/javascript     max;
    ~image/                    max;
    ~font/                     max;
}

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    expires $expires;
. . .

在此处添加以下两个新部分:一个在 server 块之前,用于定义缓存不同文件类型的时间,另一个在其内部,用于适当地设置缓存标头。

块之前的 server 部分是一个新 map 块,它定义了文件类型和该类型文件应该被缓存多长时间之间的映射。

我们在这张地图中使用了几种不同的设置:

  • default 设置为 off,不会添加任何缓存控制标头。对于内容来说,这是一个安全的设定,我们对缓存的工作方式没有特别的要求。
  • 对于 text/html,我们将值设置为 epoch。这是一个明确导致不缓存的特殊值,它强制浏览器始终询问网站本身是否是最新的。
  • 对于 text/cssapplication/javascript,它们是样式表和 JavaScript 文件,我们将值设置为 max。这意味着浏览器将尽可能长时间地缓存这些文件,从而大大减少请求的数量,因为这些文件通常有很多。
  • 最后两个设置是 ~image/~font/,它们是正则表达式,将匹配所有包含 image/font/ 在其 MIME 类型名称中的文件类型(如 image/jpgimage/pngfont/woff2)。与样式表一样,网站上的图片和网络字体都可以安全地缓存以加快页面加载时间,因此我们也将其设置为 max

3、测试 Nginx 配置与重新加载配置:

sudo nginx -t
sudo nginx -s reload

这样就完成了对 Nginx 浏览器缓存的设置,下面看一下效果:

同时在此处可以查询常见 MIME 类型列表


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - Nginx 如何设置浏览器缓存

分享到:

发表评论

评论列表