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

标签 java spring tomcat caching servlets

假设我想通过直接从 RAM 内存中加载 .css.js 和一些其他文件(favicon、一些图像)的全部内容来提高性能,而不用到磁盘.

我可以只编写 servlet/ Controller ,它会在上下文初始化或第一次请求时加载这些文件,并在简单的 String 中缓存,但是是否有任何标准的解决方案来为选定的静态资源提供服务从 RAM 中的 Spring、Servlets 或 Tomcat 规范?

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

最佳答案

Tomcat 默认缓存静态文件。

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

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

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

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

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

关于java - 在 Spring/Servlet/Tomcat 中从内存中提供静态资源的优雅方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22778293/

相关文章:

java - 如何通过maven部署spring-boot构建的jar?

Java Swing : How can I change the size of one row in a Grid layout and allow it to resize dynamically only horizontally and not vertically?

java - eclipse中静态导入

Spring 设置默认 PathVariable

maven - java.lang.NoSuchMethodError : org. jboss.resteasy.specimpl.BuiltResponse.getHeaders()Ljavax/ws/rs/core/MultivaluedMap

Jetty 与 Tomcat 中 Spring Controller 的 JSON 响应

tomcat - Apache Tomcat 中的每个应用程序系统属性

java - Spring security 3.2 - @PostAuthorize 表达式根据方法的返回对象评估主体

java - Selenium 设置速度执行测试

java - 具有参数化 bean 类的托管 bean 必须是 @Dependent : class org. apache.cxf.jaxrs.provider.AbstractCachingMessageProvider