脱机第一Web应用程序中的缓存清除

way*_*ure 7 javascript caching google-chrome web-applications html-webpack-plugin

我们目前正在使用Webpack和HtmlWebpackPlugin为我们的网页生成我们的javascript构建.

new HtmlPlugin({
    template: 'www/index-template.html',                //source path - relative to project root
    filename: 'index.html',                             //output path - relative to outpath above
    hash: true,
    cache: true                                         //only emit new bundle if changed
}),
Run Code Online (Sandbox Code Playgroud)

这会导致将哈希添加到捆绑的javascript文件的查询字符串中.

<script type="text/javascript" src="/build/vendor.min.js?4aacccd01b71c61e598c"></script><script type="text/javascript" src="/build/client.min.js?4aacccd01b71c61e598c"></script>
Run Code Online (Sandbox Code Playgroud)

使用任何标准桌面或移动浏览器时,新版本会正确缓存,并且无需用户付出任何努力即可加载新版本的网站.但是,我们还有一个chrome web app实现,我们称之为:

chrome.exe --app = http:// localhost:65000 --disable-extensions

在这个应用程序中,由于某种原因,javascript构建结束时的哈希不会破坏缓存.我们必须手动右键单击页面上的某个位置,然后单击重新加载(或按F5).由于某种原因,缓存未在Web应用程序中被破坏.

我在想它可能是在缓存index.html文件吗?这可能导致应用程序永远不会在构建上收到更新的哈希值.如果是这种情况,我不知道如何解决这个问题.

我还注意到,如果我们的localhost服务器关闭,页面仍会加载,就像服务器正在运行一样.这向我指示某种离线缓存.我检查了manifest.json参数,找不到任何强制重新加载的东西.

我也试过这些镀铬命令行开关,它们都没有帮助: - disk-cache-size = 0, - aggressive-cache-discard, - disable-offline-auto-reload.

另一个警告是我们需要保留localStorage数据及其cookie.在标准浏览器窗口或任何浏览器中,它可以正常工作,但不适用于Chrome网络应用程序中.

Cha*_*d H 1

您在与服务人员谈论“渐进式 Web 应用程序”吗?如果是这样,那么 html 文件可以(并且应该)在第一次下载时缓存。您需要在客户端上进行某种积极的更新过程,以确保正确加载新文件。

也许有一个 api 调用可以检查服务器上的某种脏标志,如果它返回 true,它应该重新加载模板文件。或者更复杂的东西,它从服务器获取一组脏文件,这样它就知道要重新加载哪些文件,而不是加载所有内容。只是一些想法。