标签: auto-versioning

如何强制浏览器重新加载缓存的CSS/JS文件?

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

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

理想情况下,解决方案不会强制浏览器在每次访问页面时重新加载文件.我会发布自己的解决方案作为答案,但我很好奇,如果有人有更好的解决方案,我会让你的投票决定.

更新:

在这里讨论了一段时间后,我发现John Millikinda5id的建议很有用.事实证明,有一个术语:自动版本控制.

我在下面发布了一个新的答案,它是我原来的解决方案和John的建议的组合.

SCdF建议的另一个想法是将伪造的查询字符串附加到文件中.(一些Python代码自动使用时间戳作为伪造的查询字符串由pi提交.).但是,有一些关于浏览器是否会使用查询字符串缓存文件的讨论.(请记住,我们希望浏览器缓存文件并在以后的访问中使用它.我们只希望它在更改后再次获取文件.)

由于不清楚伪造的查询字符串会发生什么,我不接受这个答案.

javascript css caching auto-versioning

957
推荐指数
26
解决办法
38万
查看次数

使用Android Studio/Gradle从git describe自动版本化Android项目

我已经进行了广泛的搜索,但可能由于Android Studio和Gradle的新功能,我还没有找到任何关于如何执行此操作的说明.我想基本上完成本文中描述的内容,但使用Android Studio,Gradle和Windows而不是Eclipse和Linux.

git android auto-versioning gradle android-build

36
推荐指数
5
解决办法
2万
查看次数

从`git describe`派生应用程序构建版本 - 如何获得相对简单的字符串?

UPDATE

我看到这个问题已经变得有点流行了.现在已经是我公认的Git使用年限了,从那以后我学到了很多东西.,拜托之前,不管你会从这个Q&A得知事情对你的Git冒险阅读最后一段.


我想编写应用程序构建版本,该版本是从我所在的GIT分支名称(构建时)和自分支分歧后的提交数量自动派生的.我相信这对我的GIT存储库中的任何提交都是唯一的吗?分支名称是唯一的,并且提交沿着分支相互链接?如果我标记提交,我也可以使用该标记作为前缀.

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

我有什么选择?我在这里想的是正确的方向吗?当我有更多关于软件开发的重要事项时,我只是厌倦了为版本添加数字.

顺便说一下,我从来没有用肮脏的工作树建造.即我在构建公共发布之前总是将更改提交到存储库.

我现在知道 Git分支只是提交引用,因此,许多分支(和标记!)可能指向单个提交.因此,问题"这个提交属于哪个分支/谎言" 对Git 来说并不完全有效.Git 跟踪你正在使用的"当前"分支 - 它已经为你检查过的分支 - 但同时任何数量的其他分支可能指向同一个提交,并且可以说没有任何一个分支可以被选择为"main"除非您想要表示当前已签出到磁盘的那个.请阅读本页面上以下答案进行详细说明.

versioning git auto-versioning

18
推荐指数
4
解决办法
1万
查看次数

在ASP.NET MVC中自动转换CSS/JS?

所以我正在阅读这篇有关CSS/JS文件的ASP.NET MVC中"autoversioning"的stackoverflow帖子,并想知道"最佳"策略是做什么的.

提供的解决方案插入一个程序集编号 - 这意味着每次发布 - 它将更改每个单个文件,这是不理想的,因为如果您只修改1*.css或*.js,那么它将更改每个文件.

1)如何仅针对"单个文件"而不是使用IIS7上的修改日期或其他内容进行站点范围组装?

2)如果我有某种"静态"资产 - 例如http://static.domain.com/js/123.js - 如果有人集成了这个静态,如何使用重写来发送请求的最新文件链接到他们的网站?

http://static.domain.com/js/123.js是链接,当请求到来时 - 检查并发送最新文件?

asp.net-mvc auto-versioning

14
推荐指数
3
解决办法
1万
查看次数

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

我刚刚了解了SVN的WebDAV自动版本控制功能.虽然我知道这不是正确版本控制的替代品,但是消息记录了变更集,它让我感觉像是Dropbox的坚实而安全的替代品(减去漂亮的GUI和网页).但是,由于自动版本控制中的提交很频繁,我认为Git或Hg更适合这种情况,因为它们的数据库更紧凑(尽管我想知道事物的分布式特性是否会使自动化变得难以解决冲突).

据了解,这是一个使用Git或Hg实现的功能吗?

git version-control mercurial webdav auto-versioning

13
推荐指数
2
解决办法
6185
查看次数

使用JBoss自动版本化静态内容

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

不太了解PHP,我不确定PHP的Tomcat/JBoss类似物.htaccess是什么.如果我必须编写自己的自动版本,我会从哪里开始?原理很清楚 - 使用文件的时间戳重写URL,但我不太了解使用JBoss/Tomcat进行URL重写.


更新:

结合Pascal新手推荐的方法,这就是我最终得到的结果:

1.自定义<my:script/><my:style/>标签,所以我不必在<c:url/>任何地方看到标签.

<%@ tag body-content="empty" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ attribute name="src" required="true" rtexprvalue="true" %>
<script src="<c:url value="${src}" />"></script>
Run Code Online (Sandbox Code Playgroud)

2.相当紧随新手的步骤,但映射UrlRewriteFilter/*在web.xml中:

<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

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

// On application deploy:
long CACHE_BUST = System.currentTimeMillis() / 1000;

// later...
session.setAttribute("cacheBust", CACHE_BUST);
Run Code Online (Sandbox Code Playgroud)

4. ...so that I can use these rules in urlrewrite.xml …

jboss tomcat caching auto-versioning

9
推荐指数
1
解决办法
3444
查看次数

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

这个问题在LaTeX文档的标题中添加版本号激发了我的好奇心:

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

(所以有人不是这样做的{\bf Version:} 1.2,然后是{\bf Version:} 1.2 1.3)?

latex auto-versioning

7
推荐指数
1
解决办法
1808
查看次数

如何在asp.net核心中更改汇编信息?

我想版本化我的asp.net核心应用程序.

我按照以下链接:http://www.matthiaseinig.de/2013/05/20/auto-generate-fileversion-for-all-projects-in-a-solution-with-t4/,但我想删除项目装配信息,但我没有找到它.

如何删除重复的程序集信息?我想用另一个文件覆盖asp核心程序集.

在此输入图像描述 在此输入图像描述 在此输入图像描述

更好的解决方案

过了一会儿,我意识到最好的解决方案是使用T4文件,每次构建后版本会自动递增.

看这里:

http://www.matthiaseinig.de/2013/05/20/auto-generate-fileversion-for-all-projects-in-a-solution-with-t4/

auto-versioning assembly-attributes .net-assembly .net-core asp.net-core

6
推荐指数
1
解决办法
3626
查看次数

如何在AndroidManifest.xml中使android:versionName在eclipse中自动更改?

我想在每次发布apk时更改android:versionName.

是否有任何eclipse插件或其他一些方法可以帮助它自动更改我的代码的编译?

例如,今天是10/09/2011,我希望AndroidManifest.xml中的android:versionName值设置为1.0.0.1009

android auto-versioning android-manifest android-version

5
推荐指数
1
解决办法
1023
查看次数

新的Delphi XE2自动生成的内部版本号是否链接到1.1.2000 00:00:00?

在Delphi XE2中,自动生成的构建号功能现在使用某种日期和时间生成的值,如下所示:

2.4.4386.838

每次构建时最后两个数字都会更改,并且基于当前日期和时间:

Major = 2 (user defined)
Minor = 4 (user defined)
Release = 4386 (number of days since Jan 1 2000)
Build = 838 (number of seconds since 00:00:00)
Run Code Online (Sandbox Code Playgroud)

我想这个发布和构建数字的新格式是从.NET实现中借用的,它实现了非常相似的功能.在.net中,最后一个数字(Build)等于自当地时间午夜以来的秒数除以2.有关.net实现的详细信息,请参阅此链接:艰难地确定构建日期

如果可以依靠这种方式保持这种方式,那么现在我们有更好的方法来确定编译时间而不是

  1. 使用IDE插件

  2. 使用PE Headers hacks

问题不在于如何返回旧的自动增量版本号功能.

问题 XE2是否确实使用了上面显示的日期和时间,从2010年1月1日开始,在Build和Release数字中添加了几天和几秒?

delphi parsing auto-versioning compilation-time delphi-xe2

5
推荐指数
1
解决办法
2366
查看次数