我有一台 Apache Tomcat 7 服务器。如果我更改服务器上的文件(例如样式表、javascript 文件或任何纯文本文件),例如使用 vim。然后,如果我在互联网浏览器中转到该文件,并按几次 F5 直到看到实际更改,我必须等待(每 500 毫秒按一次 F5)几秒钟(约 3 秒)才能看到我刚刚更改的内容。
简而言之:如果服务器上的文件发生更改,我会在客户端大约 3 秒后看到它。因此某个地方必须有一个缓存,可能是服务器端,因为我使用 F5,它应该丢弃客户端缓存。那么如何在 Apache Tomcat 服务器上设置目录,以便它不会缓存文件?
我想这样做是因为我创建了一个基于 Ajax/Servlet 的简单聊天网站。但输入消息后,它会在约 3 秒后出现。我知道这可以更快,因为我之前在 PHP 免费网络托管服务器上做过。
答案1
Tomcat 默认缓存静态内容,TTL 为 5 秒。如果你想更改该设置,请参阅http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Attributes。具体来说,您需要 cacheTTL、cachingAllowed 以及可能的 cacheMaxSize 和 cacheObjectMaxSize。
答案2
不确定 Tomcat 如何将无缓存添加到所有内容中。自己控制标头的简单方法是在 web.xml 中编写和配置通用标头过滤器,如下所示:
=== web.xml ===
无缓存 xyzfilters.ResponseHeaderFilter
缓存控制无缓存,必须重新验证
CacheForWeek uk.co.slc.crm.common.filters.ResponseHeaderFilter
缓存控制最大年龄=604800,公共
无缓存/*.do
CacheForWeek /图像/*
CacheForWeek /*.js
CacheForWeek /*.css
=== web.xml ===