5

我有一个设置,其中 nginx 提供所有静态内容(CSS/JS)。我们的问题是,当我们更新静态内容时,浏览器不一定会立即更新它们,这会在我们推送新版本时引起问题。

我想要一个 nginx 插件,它基本上替换了对 CSS/JS 的所有调用并广告版本号,如下所示:

前:

<link rel="stylesheet" type="text/css" href="/media/css/style.css" />

后:

<link rel="stylesheet" type="text/css" href="/media/css/style.css?3428432" />

并根据 style.css 文件本身的最新更改日期自动执行此操作。所以我不必更新 HTML。有这个插件吗?我知道 Google 的 mod_pagespeed 在他们的 apache2 模块中做了类似的事情。但我找不到任何 nginx 的人。

4

2 回答 2

5

通常,这是在应用程序本身中完成的,而不是在网络服务器级别。网络服务器通常只知道要提供什么以及从哪里提供服务。PHP 和 Rails 都可以执行您在上面描述的操作,但同样,这是在应用程序本身内。

据我所知,这篇文章是一个很好的逐步演练,与您所要求的非常相似,但同样,这涉及应用程序更改。如果您在 Google 上搜索“nginx css 版本控制”,您会发现其他讨论 nginx 配置的文章,但我所查看的所有内容也涉及应用程序更改。

于 2013-03-21T15:36:33.900 回答
0

将以下内容添加到 nginx 应该只使用文件名并忽略版本信息来提供文件。

location ~ ^/(assets/js|assets/css) {
 root path/to/the/static/files;
 access_log off;
 expires max;
 try_files $uri $1;
}
于 2017-01-26T12:26:38.677 回答