所以我正在制作这个小项目,我遇到了一些麻烦。有一件事不起作用是浏览器保持缓存包含保存数据的json文件,当我在其他地方更新json时,浏览器返回到它已缓存的旧版json文件并读取它。不幸的是我不想那样。我根本不希望浏览器缓存该文件,以便每次加载页面时,它都会向服务器询问json文件并根据该文件而不是缓存的任何文件进行操作。然而,我希望能够缓存页面上的所有其他内容,但如果必须为此工作而牺牲,那么这是我愿意做出的牺牲。我想在JavaScript中会有一个调用,它会丢弃当前的json文件并再次向服务器询问它或类似的东西
<script src="mySaveFiles.json" cache="no">
或某种类似的东西可以帮助我实现我所说的......帮助?
答案 0 :(得分:40)
最简单的方法是使用一些随机参数附加源字符串,这会在服务器端被忽略
<script src="mySaveFiles.json?nocache=123" ></script>
一种解决方案是使用JavaScript生成脚本元素并附加当前时间,如下所示:
var el = document.createElement( script );
el.src = 'mySaveFiles.json?nocache=' + (new Date()).getTime();
document.head.appendChild( el );
这样,浏览器永远不会缓存JSON文件,因为它在每个调用中看起来都是一个不同的文件(由于参数)。
答案 1 :(得分:6)
我最喜欢的一个是htaccess(如果这对你有用,我看不到)
禁用多个扩展程序的缓存
<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi|json)$">
Header unset Cache-Control
</FilesMatch>
仅为1个分机禁用缓存
<Files .json>
Header unset Cache-Control
</Files>
我在这里找到了它:http://www.queness.com/post/5421/17-useful-htaccess-tricks-and-tips
答案 2 :(得分:2)
两个选项:
答案 3 :(得分:-1)
如果您不想缓存任何数据,那么您可以使用以下元标记
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="-1">