如何通过304响应避免http请求?

时间:2016-07-22 03:26:28

标签: javascript http tomcat browser-cache

我正在使用tomcat8,我的项目中有一个非常大的javascript文件。默认情况下,浏览器和tomcat将使用Last-Modified,ETag来确定是否需要传输javascript文件或使用缓存的文件。

但由于javascript文件很少更新,所以我希望浏览器可以使用本地缓存,并且不要询问服务器是否修改了文件,因为这样仍然需要http请求。我觉得这很浪费。

然后我在expiresfilter下面使用expires头到浏览器。

<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 10 minutes</param-value>
    </init-param>
    <init-param>
        <param-name>ExpiresByType text/css</param-name>
        <param-value>access plus 10 minutes</param-value>
    </init-param>
    <init-param>
        <param-name>ExpiresByType application/javascript</param-name>
        <param-value>access plus 10 minutes</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>ExpiresFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

但它仍然无效。仍然发送了http请求并且收到了http响应304。

如何避免这种不必要的请求?如果我实现它,我怎么能要求浏览器获取新脚本如果我真的更新它大约3个月一次?

0 个答案:

没有答案