如何在JavaScript或html中实现与Google Chrome浏览器的“空缓存和硬重载”?

我正在创建一个显示JSON文件中的文本的网站。它还允许用户添加文本,删除文本和更新现有文本。我进行了设置,以便当用户按下按钮(添加btn,删除btn,更新btn)时,所做的更改将写入JSON文件,并且页面会刷新。页面刷新时,它会读取JSON文件(我已经确认是新版本),但是不会显示新数据。


我已经深入检查过,在重新加载页面之前已修改了JSON文件。


if (request.readyState === 4 && request.status === 200) {

   let myJson = JSON.parse(request.responseText)

   /*do something*/

 }

此时:尽管JSON文件已被修改,但仍在读取旧文件。当我执行空缓存和硬重装时,将读取新的JSON文件。


我已经尝试过使用JavaScript:


location.reload(true)

在HTML中,以下各项的组合:


    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>

    <meta http-equiv="Cache-control" content="no-cache"/>

    <meta http-equiv="cache-control" content="no-store" />

    <meta http-equiv="Pragma" content="no-cache" />

    <meta http-equiv="Expires" content="0" />

    <meta http-equiv="Expires" content="-1">

这些都没有奏效。


凤凰求蛊
浏览 216回答 2
2回答

慕虎7371278

我希望您不要将值保存在db中。只需将所有更新值保存在myJson中为了解决您的问题,只需将数据保存到本地存储中即可,而不是将变量保存到本地存储中localStorage.setItem("myJson",JSON.parse(request.responseText));如果每次添加,更新,删除,修改本地存储,以便本地存储具有新的更新数据在页面加载时检查本地存储是否有值,如果有值则不向服务器发送请求,只需从本地存储(如波纹管)读取请求var&nbsp;myJson=&nbsp;localStorage.getItem("myJson",JSON.parse(request.responseText));

Qyouu

如果可能的话,您可以在正在执行的任何文件或请求的末尾添加查询字符串。如果您需要像这样的网址$.get('myapi/getfile');,请尝试在处添加当前日期/时间,然后像这样结束:$.get('myapi/getfile?cachebreaker='&nbsp;+&nbsp;Date.now());这样会产生一个URL,例如myapi/getfile?cachebreaker=1553709710447浏览器会将其解释为新请求,而不使用缓存
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript