我们有一个应用程序允许用户添加/编辑/替换/删除内容(文本、图像、swfs、mp3s 等)。我们希望管理员通过使用无缓存标头始终拥有最新更新的文件,并且当用户运行应用程序时,所有内容都会获取/使用缓存。
我研究了解决方案并尝试使用 html 元标记,例如:
<meta http-equiv="expires" content="0" />
<meta http-equiv="cache-control" content="no-cache, no-store" />
<meta http-equiv="pragma" content="no-cache" />
但这似乎不是一个好的解决方案,因为这发生在创建标头之后并且不会更改媒体(图像、swfs、mp3 等)标头。
我想使用 apache 设置标题并遇到此站点的此代码:
<filesMatch "\.(html|htm|js|css)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</filesMatch>
这似乎是一个很好的解决方案,但是我们需要缓存和不应该缓存之间的唯一真正区别是 URL(preview.jsp 与 run.jsp),因此我们无法通过文件类型匹配它因为大多数文件都是一样的。
有人对这种情况有很好的解决方案吗?
谢谢。
编辑:
Preview.jsp和run.jsp基本相同,只是jsp和js处理不同。他们通过 iframe 读取相同的内容和媒体。例如,它们看起来像:
<%
//Some JSP
%>
/* HTML Headers, JS, ETC */
<iframe id="contentFrame" seamless="1" src="http://somedomain.com/template.html"></iframe>
/* End HTML */
preview.jsp 和 run.jsp 出现在同一目录中并使用所有相同的资源。我正在寻找一种解决方案,让 preview.jsp 不缓存任何东西,而 run.jsp 来缓存东西。
服务器是用 Apache Tomcat 设置的。