在nginx中自动版本化CSS / JS

时间:2013-03-21 11:43:55

标签: nginx versioning auto-versioning

我有一个设置,其中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。 有插件吗?我知道Googles mod_pagespeed在他们的apache2模块中做了类似的事情..但我找不到nginx的任何人。

2 个答案:

答案 0 :(得分:4)

通常,这是在应用程序本身完成的,而不是在Web服务器级别完成的。网络服务器通常只知道要提供什么,从何处。 PHP和Rails都能够执行您在上面描述的内容,但同样,这也是应用程序本身的内容。

据我所知,this article是一个很好的循序渐进,与你所要求的非常相似,但同样,这涉及到应用程序的变化。如果您在Google上搜索“nginx css版本控制”,您会找到其他讨论nginx配置的文章,但我所看到的所有文章都涉及应用程序更改。

答案 1 :(得分:0)

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

location ~ ^/(assets/js|assets/css) {
 root path/to/the/static/files;
 access_log off;
 expires max;
 try_files $uri $1;
}