Я пытался применить технику уничтожения кеша ресурсов Spring- MVC stati c (js / css) (успешно используется в новом проекте Spring- MVC) для старых стоек 1 система (с некоторой весны). т.е. добавление md5 ha sh к ресурсам (spring / path / main- [md5hash]. js vs /path/to/js/main.js)
Настройка:
- Добавление пружины - mvc в pom. xml
- Добавление записей пружины - mvc сервлет-диспетчера в сеть. xml
- Добавление сети пружины. xml - не уверен, если какой-либо из них не требуется
<bean id="cacheManager" name="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
<property name="caches">
<set>
<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"
name="resources"/>
</set>
</property>
</bean>
<mvc:resources mapping="/resources/**" location="/path/to/js/" />
<mvc:resources mapping="/res/**" location="/path/to/js/">
<mvc:cache-control cache-public="true" max-age="31536000" />
<mvc:resource-chain resource-cache="true">
<mvc:resolvers>
<bean class="org.springframework.web.servlet.resource.CachingResourceResolver">
<constructor-arg ref="cacheManager" />
<constructor-arg value="resources" />
</bean>
<mvc:version-resolver>
<mvc:content-version-strategy patterns="/**"/>
</mvc:version-resolver>
</mvc:resolvers>
<mvc:transformers>
<bean class="org.springframework.web.servlet.resource.CachingResourceTransformer">
<constructor-arg ref="cacheManager"/>
<constructor-arg value="resources" />
</bean>
<bean class="org.springframework.web.servlet.resource.CssLinkResourceTransformer">
<!--<property name="allowedLocations" value="/static"> </property>-->
</bean>
</mvc:transformers>
</mvc:resource-chain>
</mvc:resources>
Создание taglibs
// function (HtmlFunctions.getForLookupPath) - method for generating path to js file with md5 hash
public static String getForLookupPath(String src) {
ResourceUrlProvider resourceUrlProvider = SpringContext.getBean(ResourceUrlProvider.class);
return resourceUrlProvider.getForLookupPath(src);
}
<!-- jsp tag (js.tag) - this tag calls above function and generates the <script> tag with correct path to js file -->
<script src="<spring:url value="${fnc:getForLookupPath(src)}" />"></script>
<!-- Call js.tag in page.jsp -->
<p:js src="/res/main.js"/>
Вот самое близкое, что я заставил его работать:
в сети. xml:
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/mvc/*</url-pattern>
</servlet-mapping>
в Spring-Web. xml:
<mvc:resources mapping="/res/**" location="/path/to/js/">
на странице. jsp:
<p:js src="/res/main.js"/>
В приведенном выше примере путь генерируется на странице. jsp - это [BASEPOWERPAY] / res / main- [md5hash]. js
- при вводе этого в браузере возникает ошибка 404. Тем не менее, библиотека может четко найти файл, так как она может вычислить и добавить правильные значения ha sh
- При воспроизведении сгенерированного URL-адреса я обнаружил, что этот путь работает в браузере: [BASEURL] / mvc /res/main-[md5hash].js
- Таким образом, существует разрыв между генерируемым URL и действующим URL.
Вот все комбинации, которые я Пробовал:
Случай 1
- web. xml - mvc -диспетчер URL-шаблона - [/ *]
- FAIL - странно, это переопределяет все URL-адреса сервлетов (например, / Logon). Я думал, что используются самые конкретные c URL сервлета
Случай 2
- web. xml - mvc -dispatcher url-pattern - [/]
- FAIL - странно, это переопределяет все URL-адреса сервлетов (например, / Logon). Я думал, что используются самые конкретные c URL сервлета
Случай 3
- web. xml - mvc -dispatcher url-pattern - [/ mvc / *]
- spring-web. xml - сопоставление ресурсов - [/ res / **]
- page. jsp - sr c - [/res/main.js]
- сгенерировано [BASEURL] / res / main- [md5hash]. js - ошибка 404
- [BASEURL] / mvc / res / main- [md5hash]. js работает
Дело 4
- web. xml - mvc шаблон URL-адреса диспетчера - [/ mvc / *]
- spring-web. xml - сопоставление ресурсов - [/ res / ** ]
- стр. jsp - sr c - [/mvc/res/main.js]
- URL не создан (неизвестно)
- [BASEURL] / mvc / res / main- [md5hash]. js работает
Дело 5
- web. xml - mvc шаблон URL-адреса диспетчера - [/ mvc / *]
- spring-web. xml - сопоставление ресурсов - [/ mvc / res / **]
- URL не создан (неизвестно)
- [BASEURL] / mvc / mvc / res / main- [md5hash]. js работает
Дело 6
- web. xml - mvc шаблон URL-адреса диспетчера - [/ mvc / *]
- spring-web. xml - отображение ресурсов - [/ mvc / res / ** ]
- стр. jsp - sr c - [/mvc/res/main.js]
- сгенерировано [BASEURL] /mvc/res/main.js - ошибка 404
- [BASEURL] / mvc / mvc / res / main- [md5hash]. js работает
Дело 7
- web. xml - mvc - шаблон URL-адреса диспетчера - [/ mvc /]
- spring-web . xml - сопоставление ресурсов - [/ res / **]
- стр. jsp - sr c - [/res/main.js]
- сгенерированный [BASEURL] / res / main- [md5hash]. js - ошибка 404
- не удается найти работающий URL
Спасибо всем кто смотрит