nginx 中的自动版本控制 CSS/JS

Posted

技术标签:

【中文标题】nginx 中的自动版本控制 CSS/JS【英文标题】:Auto-versioning CSS/JS in nginx 【发布时间】:2013-03-10 21:46:01 【问题描述】:

我有一个设置,其中 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 的人。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

嗯很可能真的谢谢。我猜解析所有传出内容将成为性能瓶颈。将其构建到应用程序中比 nginx 插件更好。【参考方案2】:

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

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

【讨论】:

以上是关于nginx 中的自动版本控制 CSS/JS的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET MVC 中自动版本化 CSS/JS?

Gulp:静态资源(css,js)版本控制

git全部使用步骤

Git 或 Hg 或任何现代 VCS 中的 WebDAV 自动版本控制

版本控制不会自动增加

Visual Studio 2017 (.NET Core) 中的自动版本控制