php - 自动版本控制静态内容

标签 php svn static

我正在开发一个 PHP 站点,该站点提供来自无 cookie 域的静态内容(感谢 SO Blog!),该域提供具有高缓存的内容,这意味着我无法更改内容(JS, CSS 和图像)而不会使该缓存失效。目前我通过将 ?revision(例如 style.css?19)附加到静态 URL 的末尾来执行此操作,目前我正在手动执行此操作,这显然很不方便。

推荐的完成方法是什么?我正在使用 Subversion,根据我的理解,我可以使用各种工具来获取修订号——但我将如何将其导入 PHP(在每次加载页面时都运行它似乎不是很明智?)。我猜我很可能应该使用某种构建系统。

如有任何建议,我们将不胜感激。

谢谢

最佳答案

SVN keyword substitution可能是解决方案。您可以这样使用它:首先将以下代码添加到您的 PHP 代码中,靠近您要使用该版本的地方。像这样:

$svn_version = '$Revision$'; // remember to use single quotes!

现在提交那个文件。然后重新打开它。观察上面的行现在看起来像这样:

$svn_version = '$Revision: 66232 $';

SVN 识别关键字标签并将其替换为修订号。从现在起,每次您提交该文件时,此标签都会更新为最新版本号,它还会在您进行 check out 或导出时包含版本号。

现在,您只需执行一些字符串操作即可从该字符串中获取该数字。我相信您可以自己解决这个问题。

当然,当您在不接触 PHP 的情况下更新实际的 css/js 文件时,这是行不通的。而这不能轻易解决。每次更改 CSS/JS 时都可以更改 PHP。或者是的,你可以选择一些构建系统。

无论如何,我希望你能从中得到一些想法。

关于php - 自动版本控制静态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1556452/

相关文章:

php - 如果断言失败,如何让 PHPUnit 执行某些操作

php - 如何使用 php 或 codeigniter 生成动态 css 文件

svn - 为什么 VisualSVN 服务器会重写我的 URL?

java - SVNKit - 获取修改以提交

Java静态主要也codingBat

php - 如何在 PHP 中找到两个日期之间的小时差?

php - Laravel 4.1 Request::is for active menu 不工作

远程位置的 SVN,大结帐有时会通过 Jenkins 失败

c++ - 默认情况下全局变量是extern还是相当于在全局中用extern声明变量?

python - 在 .py 文件中引用 django 中的静态文件(不在模板中)