问题标签 [auto-versioning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
56 回答
507545 浏览

javascript - 如何强制浏览器重新加载缓存的 CSS 和 JavaScript 文件

我注意到一些浏览器(特别是 Firefox 和Opera)非常热衷于使用.css.js文件的缓存副本,即使在浏览器会话之间也是如此。当您更新其中一个文件时,这会导致问题,但用户的浏览器会继续使用缓存的副本。

强制用户浏览器在文件更改时重新加载文件的最优雅方法是什么?

理想情况下,该解决方案不会强制浏览器在每次访问页面时重新加载文件。


我发现John Millikinda5id 的建议很有用。事实证明有一个术语:自动版本控制

我在下面发布了一个新答案,它结合了我的原始解决方案和约翰的建议。

SCdF提出的另一个想法是将伪造的查询字符串附加到文件中。(一些 Python 代码自动使用时间戳作为伪造的查询字符串,由pi提交。。)

但是,关于浏览器是否会缓存带有查询字符串的文件存在一些讨论。(请记住,我们希望浏览器缓存文件并在以后的访问中使用它。我们只希望它在文件更改时再次获取文件。)

0 投票
1 回答
642 浏览

svn - apache颠覆中的SVNAutoversioning指令重要吗?

如果是,为什么?我知道设置它会导致更多数量的自动提交的修订。有更多的自动提交是好事吗?

0 投票
1 回答
738 浏览

asp.net - 在代码中访问 ScriptManager 代理

我有一种情况,我想在我的 ScriptManager (包含在我的 MasterPage 中)和任何ScriptManagerProxies(内容页面)。

我可以轻松地在代码中访问 ScriptManager,然后遍历它的 Scripts 集合以获取我以声明方式设置的脚本路径,然后“设置”一个带有“?[lastmodifiedtimestamp]”的新路径。

问题是,我不知道如何访问可能存在的任何 ScriptManagerProxies。

调试时,我可以看到非公共成员(._proxies)中的代理。我浏览了文档,但看不到您可以在哪里实际公开访问此集合。

我错过了什么吗?

我的内容页面的 Page_PreRenderComplete 事件的基类中有以下代码:

上面的代码提供了我在 MasterPage 中定义的一个脚本,但没有提供我在内容页面的 ScriptManagerProxy 中定义的另外两个脚本。

0 投票
3 回答
964 浏览

svn - 如何在每次提交时提交颠覆修订,以便在两个存储库之间引用

考虑软件分布在两个独立的存储库 Pub 和 Priv 中。Pub 存储库是公开的。私人已关闭。当任何一方发生变化时,持续集成服务器会同时构建 Pub 和 Priv。然后它从 Priv 创建可供 Pub 用户使用的可下载二进制文件。这些二进制文件在内部和带有颠覆修订的文件名上标记。

问题是:如何让从 Pub 构建的程序知道正确的、相应的 Priv 修订号,以便它们可以自动下载和运行?

当前的解决方案是让构建服务器修改 Pub 中的文件以设置 Priv 的修订号并将这些更改提交给 Pub。然而,这带来了两个重大问题:

  1. 构建需要很长时间,因此如果有人在构建过程中提交对 Pub(或 Priv)的更改,则会产生冲突。这可以强制解决,但日志历史看起来很奇怪,好像这些修订版已进入该版本。

  2. 颠覆日志有许多条目,例如“自动构建更新了版本”。每次构建运行都会污染其他信息丰富的颠覆日志。

那么我们能否以一种不需要更改存储库的方式来做到这一点。

真诚的,韦恩

0 投票
1 回答
731 浏览

javascript - 自动版本化图像链接在 css 和 javascript 文件中?

在我的 PHP 应用程序中,我已经成功地自动控制了我的静态内容(CSS、JS 和图像),所以我的 URL 看起来像这样:

10 位版本号只是单个文件的修改 Unix 时间戳。这是通过 mod_rewrite 和一些基本的 PHP 代码实现的(参见http://particletree.com/notebook/automatically-version-your-css-and-javascript-files/)。到目前为止,一切都很好。


但是,这是我的问题。

在我的 CSS 文件中,我有许多背景图片的链接:

同样,在我的 JS 文件中,我也引用了不同的图像。

由于我希望对我的静态内容(css、js、图像)的所有访问都包含版本号,有没有办法自动更新 .css 或 .js 文件内的链接所以上面的 css 看起来像这样:

这怎么能自动完成?

谢谢,康斯坦丁

0 投票
2 回答
6496 浏览

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

我最近才了解到 SVN 的 WebDAV 自动版本控制功能。虽然我知道这不是正确版本控制的替代品,但它的消息记录了更改集,但我觉得它是 Dropbox 的可靠且安全的替代品(减去漂亮的 GUI 和网页)。然而,由于自动版本控制中的提交很频繁,我想 Git 或 Hg 会更适合这个,只是因为它们的数据库更紧凑(尽管我想知道事物的分布式特性是否会使自动化难以解决冲突)。

据任何人所知,这是使用 Git 或 Hg 实现的功能吗?

0 投票
1 回答
243 浏览

javascript - 自动版本化外部链接的内容

所以我正在构建一个旨在由外部域加载的 javascript 库。我正在寻找一种为此进行自动版本控制的好方法。理想情况下,外部域应该能够编写<script src="<filename>" type="text/javascript"></script>并以某种方式正确地拥有该版本。

我能想到的最佳解决方案是<filename>指向一个使用服务器端语言构建的页面,该页面动态包含具有正确版本控制的正确 javascript 库。这样做的问题是它需要动态加载javascript,这意味着我们的服务器将在每次加载时被命中(即它不能被缓存)。

有任何想法吗?

0 投票
3 回答
3694 浏览

tomcat - 使用 JBoss 对静态内容进行自动版本控制

根据这里的问答,我想为在 JBoss 5 中运行的 Web 应用程序实现一个类似的自动版本控制系统。有什么东西可以做这种事情,还是我需要自己写一些东西?需要明确的是:我没有使用 PHP。

不太了解 PHP,我不确定 PHP.htaccess等的 Tomcat/JBoss 类似物是什么。如果我必须编写自己的自动版本控制,我该从哪里开始?原理对我来说很清楚 - 使用文件的时间戳重写 URL,但我对使用 JBoss/Tomcat 重写 URL 知之甚少。


更新:

结合Pascalnovice推荐的方法,我得到了以下结果:

1.自定义<my:script/><my:style/>标签,所以我不必<c:url/>到处看到标签。

2.非常接近新手的步骤,但映射UrlRewriteFilter/*web.xml:

3.将 CACHE_BUST 变量注入每个新会话(或多或少...),应用程序部署 时间戳:

4. ...这样我就可以使用这些规则urlrewrite.xml


非常感谢Pascal新手的帮助。

0 投票
2 回答
2205 浏览

latex - 如何在 Latex 中添加自动版本号?

这个问题Add a version number to the title of a LaTeX document激发了我的好奇心:

如何在 Latex 中添加自动版本号?

(所以一个人没有这样做:{\bf Version:} 1.2然后是{\bf Version:} 1.2 1.3)?

0 投票
4 回答
16130 浏览

git - 如何使用 Git 的 `describe` 命令派生应用程序构建版本字符串?

我想编写应用程序构建版本,该版本自动从我所在的 Git 分支名称(构建时)和分支分歧后的提交次数派生。我相信这对于我的 Git 存储库中的任何提交都是独一无二的?分支名称是唯一的,并且提交沿分支相互链接?如果并且当我标记提交时,我还可以让版本以该标记为前缀。

在某种程度上git describe做了我想要的,但它不包括我所在的分支名称,它包括缩写的提交 SHA-1 哈希,我认为我不需要它,因为它不会向字符串的熵添加任何内容并且可能是多余的(我在这里可能错了,所以请纠正我)。

我有哪些选择?我在想正确的方向吗?当我在软件开发方面有更重要的事情要处理时,我只是有点厌倦了在版本上附加数字。

顺便说一句,我从不使用肮脏的工作树进行构建。即,我总是在构建公共版本之前提交对存储库的更改。