如何在 Nginx 上使用高效的缓存策略服务静态资产?

Posted

技术标签:

【中文标题】如何在 Nginx 上使用高效的缓存策略服务静态资产?【英文标题】:How to serve static assets with an efficient cache policy on Nginx? 【发布时间】:2020-07-17 21:30:48 【问题描述】:

在手机上????

我正在尝试改善我网站的页面负载

我加了

# Media: images, icons, video, audio, HTC
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|mp3|ogg|ogv|webm|htc|woff2|woff)$ 
    expires 1M;
    access_log off;
    add_header Cache-Control "public";


# CSS and javascript
location ~* \.(?:css|js)$ 
    expires 1y;
    access_log off;
    add_header Cache-Control "public";

由于某些原因,我觉得我刚刚添加到 nginx 的更改没有任何效果。

https://developers.google.com/speed/pagespeed/insights/?url=https%3A%2F%2Fwww.bunlongheng.com%2F

我应该如何进一步调试?

【问题讨论】:

【参考方案1】:

您缺少来自http://nginx.org/en/docs/http/ngx_http_headers_module.htmlmax-age 指令

我不认为你真的希望 CSS 和 JS 文件过期这么久,但我可能是错的。

另外,没有登录图像和所有这些文件类型?如果您获得热链接或提供找不到的 CSS/JS 文件怎么办。

我会重新考虑您的缓存控制。

# Media: images, icons, video, audio, HTC
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|mp3|ogg|ogv|webm|htc|woff2|woff)$ 
    expires 1M;
    access_log off;
    # max-age must be in seconds
    add_header Cache-Control "max-age=2629746, public";


# CSS and Javascript
location ~* \.(?:css|js)$ 
    expires 1y;
    access_log off;
    add_header Cache-Control "max-age=31556952, public";

【讨论】:

以上是关于如何在 Nginx 上使用高效的缓存策略服务静态资产?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 nginx 中缓存静态文件

使用nginx缓存服务器上的静态文件

nginx配置管理浏览器静态缓存策略

nginx设置缓存策略

lamp架构nginx高效缓存

lamp架构nginx高效缓存