- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
让以下内容:
<mvc:resources mapping="/resources/**" location="/resources/" />
假设有 2000 个请求
/resources/script/app/myhax.js
如果我不配置任何东西,myhax.js
是否以某种方式缓存到 RAM 中并从那里处理其余的请求,或者所有 2000 个请求都是从文件的真实路径处理的(硬盘,通常)?是否可以将 Spring 配置为在直接从内存请求 future 服务后将此文件保存在 RAM 中?
最佳答案
Spring 不缓存任何资源。但是有可能为了让资源被缓存。
您可以指定 cache-period (发送具有给定最大年龄值的缓存 header )例如
<resources mapping="/resources/**" location="/resources/" cache-period="3600"/>
或
mvc:resources
由 ResourceHttpRequestHandler 支持,因此您可以创建自己的扩展 ResourceHttpRequestHandler
的子类,并通过覆盖适当的方法实现缓存逻辑,例如 writeContent
(请注意,您可以引用文档或源代码以找出列表可用方法)并在 spring 配置中使用这个新的子类。
例如
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
public class CacheResourceHandler extends ResourceHttpRequestHandler {
private Map<URL, byte[]> cache = new HashMap<>();
@Override
protected void writeContent(HttpServletResponse resp, Resource rsc) throws IOException {
byte[] buff = cache.get(rsc.getURL());
//if not in cache
if (buff == null) {
//add to cache
buff = StreamUtils.copyToByteArray(rsc.getInputStream());
cache.put(rsc.getURL(), buff);
}
//return cache version
StreamUtils.copy(buff, resp.getOutputStream());
}
}
XML配置
我们需要注释掉或者删除之前的资源映射
<!--<resources mapping="/resources/**" location="/resources/" />-->
接下来我们需要声明我们的缓存处理器bean
<bean id="staticResources" class="CacheResourceHandler">
<property name="locations" value="/resources/"/>
</bean>
最后,我们将使用上面声明的 SimpleUrlHandlerMapping 实现 HandlerMapping
接口(interface),以便从 URLS 映射到请求处理程序 bean。我们所需要的只是传递我们的 bean 进行映射
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>/resources/**=staticResources</value>
</property>
</bean>
关于java - <mvc :resources> - Does it cache to memory? 春 4.0.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27856218/
我正在学习这些教程:tutorial 1和 tutorial 2 我根据这个制作了xml文件并更改了.properties文件。现在我的应用程序无法启动,因为它不能使用我指定的驱动程序。我从 Post
让以下内容: 假设有 2000 个请求 /resources/script/app/myhax.js 如果我不配置任何东西,myhax.js 是否以某种方式缓存到 RAM 中并从那里处理其余的请求,
我正在尝试将 Hibernate 4.0.0.FINAL 与 Spring 3.1.0.RELEASE 集成使用 @Configuration。 之后出现这个问题: BeanCreationExcep
我创建了一个列长度为 varchar(1000) 的表;我可以轻松地从工作台插入 800 个字符长度的字符串,没有任何问题。但是当我尝试从我的 spring jpa 应用程序中使用相同的字符串时,它给
我是一名优秀的程序员,十分优秀!