![WordPress Nginx 浏览器缓存在无扩展名的 URL 上过期](https://linux22.com/image/659345/WordPress%20Nginx%20%E6%B5%8F%E8%A7%88%E5%99%A8%E7%BC%93%E5%AD%98%E5%9C%A8%E6%97%A0%E6%89%A9%E5%B1%95%E5%90%8D%E7%9A%84%20URL%20%E4%B8%8A%E8%BF%87%E6%9C%9F.png)
下面的事情有点困难。
为 JS 和 CSS 以及其他静态文件添加过期时间很容易:
# Directives to send expires headers.
location ~* \.(?:css|js)$ {
expires 28d;
access_log off;
add_header Cache-Control "public";
}
但对于我喜欢的 URL,我做得不对。重写的 URL 如下所示:
www.domain.tld/post-name
因此没有像 .html 或 .php 这样的扩展名,并且主页只是一个 / 请注意我的主页是静态的,没有最新的新闻/博客帖子等,所以我还希望将其缓存在浏览器中。
将过期时间添加到此位置块并不会将浏览器缓存添加到主页:
location / {
try_files $uri $uri/ /index.php?$args;
expires 1d;
}
在 php 文件位置(重写之前)添加过期时间也不起作用,Nginx 似乎想要精确的请求 URI。
我已经看到了这个建议,但担心使用太多的 if 语句:
location / {
if (-f $request_filename) {
expires 30d;
break;
}
}
确保像这样的 5 页简单网站的所有页面都能被浏览器缓存的最佳方法是什么?理想情况下,无需对 URL 进行硬编码。
www.domain.tld/ www.domain.tld/我们的产品 www.domain.tld/我们的服务 www.domain.tld/关于我们 www.domain.tld/联系方式
是否可能像我们对 gzip 所做的那样,通过 mime 类型而不是扩展名来添加过期时间?
mime_type text/html
expires 1d;
欢迎提供任何正确的建议,谢谢。