如何刷新客户端INLINE javascript

问题描述 投票:2回答:1

使用外部js文件时,浏览器可能会被强制重新加载文件。参见here

[最近,我发现,至少在Chrome版本80.0.3987.132中也缓存了INLINE脚本,摘要的示例:

<html>
    <head>
        <script>alert("I am cached!");</script>
    </head>

    <body>
        <script>alert("Me too!");</script>
    </body>
</html>

刷新内联脚本的方式是什么?


更新1:我必须提到返回内容的Web服务器正在使用HTTP 2.0

更新2:一种有效的解决方案将以辅助脚本为基础,并在页面加载时通过ajax或websocket获得“真实”脚本内容,然后像这样将其附加到头部:

function addScript(content){
    let s = document.createElement('script');
    s.innerHTML = content;
    document.head.appendChild(s);
}

这可以完成工作,但不是最佳选择,因为它需要的请求超出了必要。

javascript google-chrome caching refresh
1个回答
0
投票

[我认为浏览器仅在打开该会话中的后续调用页面时才缓存嵌入式javascript,并且在关闭或刷新页面后不保留它。

但是,这意味着浏览器会从您的情况中从其缓存中获取HTML(包括JS)。因此,您可以尝试与页面一起发送一些标头,以强制浏览器不要使用其缓存的HTML副本,而使用新的html + js。

为了测试它是HTML缓存还是“内联JS”缓存问题,请使您的html动态更改,并确认刷新后它正在更改,但内联JS执行不会更改。

您可以在此处找到有关js缓存的更多详细信息:https://v8.dev/blog/code-caching-for-devs

© www.soinside.com 2019 - 2024. All rights reserved.