핑거 프린팅과 쿼리 매개 변수를 사용하고 싶습니다. 쿼리 매개 변수 메서드는 항상 작동하지 않으며 대부분의 프록시는 쿼리를 캐시하지 않습니다. URL 또는 실제 파일 이름을 변경하는 것이 좋습니다.
그래서 Maven, Git, Tomcat, Dojo 프로젝트에서이 문제를 처리하고 있습니다. 나는 Git rev를 얻기 위해 http://mojo.codehaus.org/buildnumber-maven-plugin/을 사용한다. 그리고 내 WAR를 빌드 할 때 필터링을 사용하여 JSP에 값을 삽입하십시오. 내 주요 JSP에서
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<shortRevisionLength>8</shortRevisionLength>
<revisionOnScmFailure></revisionOnScmFailure>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<warName>${project.name}-${project.version}-${buildNumber}</warName>
<webResources>
<resource>
<directory>src/main/webapp/WEB-INF/views/includes</directory>
<targetPath>WEB-INF/views/includes</targetPath>
<filtering>true</filtering>
</resource>
</webResources>
......
</configuration>
</plugin>
의 pom.xml 내가 http://tuckey.org/urlrewrite/을 사용하고 재 작성 작업을 수행하려면
<script src="${pageContext.request.contextPath}/${buildNumber}/static/js/ckeditor/ckeditor.js"></script>
<script src="${pageContext.request.contextPath}/${buildNumber}/static/js/build/dojo/dojo.js" data-dojo-config="parseOnLoad: true"></script>
이 포함되어 있습니다. 나는 단지 하나의 간단한 규칙 만 가지고있다.
내 첫 번째 필터 항목의 web.xml을
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>logLevel</param-name>
<param-value>WARN</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
urlrewrite.xml
<rule match-type="regex">
<from>^/[0-9A-Za-z_.\-]+/static/(.*)$</from>
<to>/static/$1</to>
</rule>
유용한 URL 다시 작성 부분을 가져 주셔서 감사합니다. 하지만 빌드 번호는 $ {maven.build.timestamp}와 거의 같은 동작을합니다. 자산이 변경되지 않은 경우에도 새 버전이 나올 때마다 자산이 다시 다운로드됩니다. – benweet
아마도 당신의 질문을 이해하지 못했습니다. 배포간에 변경된 파일 만 강제로 적용 하시겠습니까? – denov
나는 모든 js 코드를 몇 개의 파일로 컴파일하고 크기를 줄인다. 그래서 나는 정말로 파일에 어떤 변화가 있는지 걱정할 필요가 없다. 사용자는 각 업데이트에서 js 파일을 다운로드하면됩니다. – denov