【发布时间】:2011-02-07 12:32:01
【问题描述】:
根据 Q&A here,我想为在 JBoss 5 中运行的 Web 应用程序实现一个类似的自动版本控制系统。是否已经有任何东西可以做这种事情,或者我需要自己写点什么?明确一点:我没有使用 PHP。
对 PHP 了解不多,我不确定 PHP 的 .htaccess 等的 Tomcat/JBoss 类似物是什么。如果我必须编写自己的自动版本控制,我该从哪里开始?原理对我来说很清楚 - 使用文件的时间戳重写 URL,但我不太了解使用 JBoss/Tomcat 重写 URL。
更新:
结合Pascal 和novice 推荐的方法,我得到了以下结果:
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>
2. 非常接近新手的步骤,但在 web.xml 中将 UrlRewriteFilter 映射到 /*:
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3. 将 CACHE_BUST 变量注入每个新会话(或多或少...),应用程序部署 timestamp:
// On application deploy:
long CACHE_BUST = System.currentTimeMillis() / 1000;
// later...
session.setAttribute("cacheBust", CACHE_BUST);
4. ...以便我可以在urlrewrite.xml 中使用这些规则:
<outbound-rule>
<from>^/static/(css|js|images)/(.*)$</from>
<to>%{context-path}/static/%{session-attribute:cacheBust}/$1/$2</to>
</outbound-rule>
<rule>
<from>^/static/\d{10}/(css|js|images)/(.*)$</from>
<to>/static/$1/$2</to>
</rule>
【问题讨论】:
标签: tomcat caching jboss auto-versioning