2013-03-21 113 views
3

我有一个设置,其中nginx提供所有静态内容(CSS/JS)。 我们的问题是,当我们更新静态内容时,浏览器不一定立即更新它们,导致在我们推出新版本时出现问题。在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

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

从我所知道的来看,this article是一个很好的循序渐进的步骤,它与您所要求的非常相似,但是这又涉及到应用程序更改。如果你在Google上搜索“nginx css versioning”,你会发现讨论nginx配置的其他文章,但是我所看到的所有内容都涉及到应用程序更改。

+2

嗯概率真正的感谢。解析所有即将发布的内容将是性能瓶颈,我想。最好将其构建到应用程序中,而不是使用nginx插件。 – Niklas9 2013-03-24 21:29:00

0

将下面的内容添加到nginx中应该仅通过取文件名并忽略版本信息来提供文件。

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