请考虑下面带有 struts 2 jquery 插件的示例,(但这可能发生在 jquery 上)
在 struts 2 jquery 插件中设置 head 标签来缓存 ajax 调用:
ajaxcache="true"
html头是(不缓存任何东西):
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Pragma" content="No-cache" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Expires" content="0" />
还有一个拦截器,它设置了如下的响应头:
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control",
"no-cache, no-store, must-revalidate");
response.setDateHeader("Expires", 0);
考虑一个包含单个 js 的示例 test.jsp 文件
<script type="text/javascript" src="js/grid.js"></script>
第一次加载test.jsp时grid.js
被浏览器加载并缓存,更改grid.js
不会导致浏览器再获取更新grid.js
文件!!
当然我可以通过设置来解决这个问题ajaxcache="false"
我的问题是,如果grid.js
只加载一次并且客户端不再获得新更新的js,那么ajax缓存有什么用?!
你能推荐一个真实的案例,你不需要更新客户端上的任何资源,所以客户端可以长时间捕获资源吗?!
或者我们可以通过其他方式使用 ajax 缓存?!