gpt4 book ai didi

java - 缓存由 servlet 提供的图像

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:40 26 4
gpt4 key购买 nike

我正在从我的 servlet 提供图像。响应内容类型为 image/jpeg。我发现从我的 servlet 请求的图像没有被缓存。我如何让它们像通常的文件图像请求一样被缓存?我尝试设置 Cache-Control: public 但无济于事。

最佳答案

在像 Tomcat 这样的容器中提供静态内容的默认 servlet 不设置任何缓存控制 header 。您不需要为此编写 servlet。只需像这样创建一个过滤器,

public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {

long expiry = new Date().getTime() + cacheAge*1000;

HttpServletResponse httpResponse = (HttpServletResponse)response;
httpResponse.setDateHeader("Expires", expiry);
httpResponse.setHeader("Cache-Control", "max-age="+ cacheAge);

chain.doFilter(request, response);

}

每当你想添加缓存控制时,只需将过滤器添加到 web.xml 中的资源即可。例如,

<filter>
<filter-name>CacheControl</filter-name>
<filter-class>filters.CacheControlFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>CacheControl</filter-name>
<url-pattern>/images/*</url-pattern>
</filter-mapping>

关于java - 缓存由 servlet 提供的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2872613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com