Рассматривали ли вы использование EhCache встроенного веб-кэширования ? Просто добавьте его к вашему web.xml
:
<filter>
<filter-name>pageCachingFilter</filter-name>
<filter-class>net.sf.ehcache.constructs.web.filter.SimpleCachingHeadersPageCachingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>pageCachingFilter</filter-name>
<url-pattern>*.htm</url-pattern>
<url-pattern>*.js</url-pattern>
<url-pattern>*.png</url-pattern>
<url-pattern>*.gif</url-pattern>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.css</url-pattern>
</filter-mapping>
И настройте SimplePageCachingFilter
кеш в вашем ehcache.xml
:
<cache name="SimplePageCachingFilter"
maxElementsInMemory="1000"
eternal="false"
timeToIdleSeconds="31536000"
timeToLiveSeconds="31536000"
overflowToDisk="false"
memoryStoreEvictionPolicy="LRU"
statistics="true"
/>
EhCache теперь будет перехватывать все клиентские запросы статических ресурсов, читать их один раз, помещать в кеш и возвращать пользователю. Чтобы сделать его еще лучше, он даже добавит заголовки HTTP Expiry
, чтобы клиент больше не звонил вам за тем же ресурсом.
Разве этот подход не лучше по сравнению с ручной записью загрузки и кэширования в синглтоне?