我试图设置缓存控制的任何静态资源(图像,js,css)在我的网站。我使用的是Spring4(带有Spring Security)和Tomcat8服务器。
我已经尝试在web.xml中设置ExpiryFilter
<filter>
<filter-name>ExpiresFilter</filter-name>
<filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
<init-param>
<param-name>ExpiresByType image</param-name>
<param-value>access plus 2 weeks</param-value>
</init-param>
<init-param>
<param-name>ExpiresByType text/css</param-name>
<param-value>access plus 2 weeks</param-value>
</init-param>
<init-param>
<param-name>ExpiresByType text/javascript</param-name>
<param-value>access plus 2 weeks</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ExpiresFilter</filter-name>
<url-pattern>/resources/*</url-pattern>
</filter-mapping>
<mvc:resources mapping="/resources/**" location="/resources/,classpath:/resources/" cache-period="2592000" />
<mvc:annotation-driven />
<http pattern="/resources/**" security="none"></http>
谢谢你。
在tomcat的logging.properties中,我启用了org.apache.catalina.filters.expiresfilter.level=FINE对tomcat过滤器的日志记录。
当筛选器初始化后,在catalina日志中打印了以下日志:
使用配置expiresFilter[excludedResponseStatusCode=[304],default=null,bytype={text/css=expiresConfiguration[startingPoint=access_time,duration=[10分钟]],application/javascript=expiresConfiguration[startingPoint=access_time,duration=[10分钟]],image=expiresConfiguration[startingPoint=access_time,duration=[10分钟]]
您可以看到,在设置缓存控制参数时,所有状态为304的http响应都将被排除在外。
我配置了tomcat过滤器,并且缓存了资源。我可以通过过滤器日志确认这一点:
org.apache.catalina.filters.expiresfilter onBeforeWriteResponseBody fine:请求“/static/img/home/phone_icon2.png”响应状态为“200”内容类型“image/png”,设置过期日期1/31/17 11:59 AM 2017年1月31日11:49:30 AM org.apache.catalina.filters.expiresfilter getExpirationDate fine:使用expiresconfiguration[startingpoint=access_time,duration=[10分钟]]匹配内容类型“image”返回1/31/17 11:59 AM/img/home/bgimage.png“响应状态”200“content-type”image/png“,设置过期日期1/31/17 11:59 AM 2017年1月31日11:49:30 AM org.apache.catalina.filters.expiresfilter getExpirationDate fine:使用expiresconfiguration[startingpoint=access_time,duration=[10分钟]]匹配”image“for content-type”image/png“返回1/31/17 11:59 AM
我建议您首先启用日志引用
Glassfish 3.1.2,Mojarra 2.1.6,SSL已激活 也是一篇关于资源缓存的好文章。在我们的应用服务器中,SSL被激活。我们看到静态资源(图像、脚本、css)没有缓存。 下面是我的测试筛选器: 过期:确定。它是一个静态资源,不会改变,因此我们将到期日期设置在未来的一个月。 上次修改:不确定。我读到,将此设置为过去也会影响缓存 缓存控制:OK。允许安全缓存。安全影响? 此设置是否
我想在缓存控制头中设置max age以响应。我已经写了如下,但仍然有max-age 0。我想只为一种方法设置max age,所以我不想禁用默认值。我认为应该是ovveride。 有人知道我做错了什么吗?
我的Laravel应用程序正在为每个站点返回默认的
为优化站点性能,静态资源应该带有恰当的'Cache-Control'值与其他必要的头。配置一个ResourceHttpRequestHandler处理器服务静态资源请求不仅会读取文件的元数据并填充'Last-Modified'头的值,正确配置时'Cache-Control'头也会被填充。【这段翻得还不是很清晰】 你可以设置ResourceHttpRequestHandler上的cachePerio
ETag标题的定义(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag): ETag HTTP响应头是资源的特定版本的标识符。它使缓存更有效,并节省带宽,因为如果内容没有改变,web服务器不需要发送完整的响应。另一方面,如果内容已经改变,etags有助于防止资源的同时更新互相覆盖(“空中冲突”)。 缓存控制头的定义(http
我有一个问题与超文本传输协议头-缓存控制:max-age=1234我的源有那个头,但任何方式发送请求和接收304.我需要可能我错过了什么?还有一个,源除了缓存控制: max-age=1234在"响应头"有缓存控制: max-age=0在"请求头",可能是它的影响。 我的一个资源响应标题,示例: > 远程地址:10.6.237.13:443请求请求方式:GET状态码:304未修改