How to prevent the browser from caching a json fil

2019-01-21 20:34发布

So I'm making this little project and I'm having some troubles with catching. One thing that's not working is the browser keeps caching the json file that contains save data and when I update the json somewhere else, the browser goes back to the old version of the json file that it has cached and reads off that. Unfortunately I dont want that. I dont want the browser to cache the file at all so that every time it loads up the page, it'll ask the server for the json file and act according to that file instead of whatever file that it has cached. I would however like to be able to cache all the other stuff that's on the page but if that has to be sacrificed for this to work then it's a sacrifice I'm willing to make. I'm envisioning that in JavaScript that there would be a call that says discard the current json file and go ask the server again for it or something like

<script src="mySaveFiles.json" cache="no"> 

or something of the sort to help me achieve what I'm talking about... help?

4条回答
2楼-- · 2019-01-21 20:43

Two options:

  1. Add a mySaveFiles.json?t=timestamp query parameter to the end of the url.
  2. Pull the file in with the XmlHttpRequest object (you still may need to add a timestamp depending on the server).
查看更多
虎瘦雄心在
3楼-- · 2019-01-21 20:48

if you dont want to cache any data then you can use the below meta tag

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="-1">
查看更多
▲ chillily
4楼-- · 2019-01-21 21:00

The easiest way is to append the source string with some random parameter, which gets ignored on the server side

<script src="mySaveFiles.json?nocache=123" ></script>

One solution would be to generate the script element using JavaScript and append the current time like this:

var el = document.createElement( script );
el.src = 'mySaveFiles.json?nocache=' + (new Date()).getTime();
document.head.appendChild( el );

That way, the browser will never cache the JSON-file as it appears to be a different file (due to the parameter) in every call.

查看更多
Emotional °昔
5楼-- · 2019-01-21 21:08

One of my favorites is just htaccess (if this is possible for you, I can't see that)

Disable cache for multiple extensions

<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi|json)$">
    Header unset Cache-Control
</FilesMatch>

Disable cache for just 1 extension

<Files .json>
    Header unset Cache-Control
</Files>

I found it here: http://www.queness.com/post/5421/17-useful-htaccess-tricks-and-tips

查看更多
登录 后发表回答