在 Spring / Servlet / Tomcat 中从内存中提供静态资源的优雅方式?

Pio*_*ler 1 java spring tomcat caching servlets

假设我想通过直接从 RAM 内存加载 的全部内容以及一些其他文件(图标、一些图像)来提高性能,.css.js无需访问磁盘。

我可以编写 servlet/controller ,它将在上下文初始化或第一次请求时加载这些文件,并以 simple 的方式进行缓存String,但是是否有任何标准的已制定解决方案可以在 Spring、Servlets 或 Tomcat 规范中从 RAM 中提供选定的静态资源?

最好也支持适当的标头(缓存控制等)。

kos*_*tya 5

Tomcat默认缓存静态文件。

您可以在 context.xml 中配置缓存行为。特别是(来自http://tomcat.apache.org/tomcat-7.0-doc/config/context.html):

cacheMaxSize
静态资源缓存的最大大小(以千字节为单位)。如果未指定,则默认值为 10240(10 兆字节)。

cacheObjectMaxSize
将放置在缓存中的静态资源的最大大小。如果未指定,则默认值为 512(512 KB)。如果该值大于cacheMaxSize/20,它将减少到cacheMaxSize/20。

cacheTTL
缓存条目重新验证之间的时间量(以毫秒为单位)。如果未指定,则默认值为 5000(5 秒)。

cachingAllowed
如果此标志的值为 true,则将使用静态资源的缓存。如果未指定,则该标志的默认值为 true。