浏览器保持javascript缓存甚至禁用etag

时间:2016-11-09 20:42:43

标签: javascript angularjs node.js http-headers browser-cache

我正在开发一个允许用户更改其网站信息的面板。在我目前的尝试中,我正在尝试更改一个菜单名称。为了发生这种变化,我在nodejs上操作服务器端的JSON文件。此JSON文件包含网站的所有设置,例如菜单名称。

逻辑在服务器端正常工作,但我无法在页面上看到更改。我可以在devtool上看到新的javascript内容,但菜单的名称在html上没有变化。如果我在隐身窗口中再次打开页面可以很好地,我可以看到新的更改。

我刚才意识到我在隐身窗口上遇到了同样的问题。请参阅下面的评论。

我通过Express静态方法提供文件。

app.use('/templates', express.static(__dirname + '/live-pages/', {
    etag: false,
    maxage: 0,
    dotfiles: 'deny',
    setHeaders: function(res, path) {
        res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate');
        res.header('Expires', '-1');
        res.header('Pragma', 'no-cache');
    }
}));

我也试图禁用这样的etag(仅用于测试)

app.disable('etag');

我正在使用查询字符串<脚本>标签加载像这样的JavaScript:

  

http://localhost:3319/templates/mypage/src/config/config.js?rel=0.47687368863262236

config.js标题:

回复标题

HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, DELETE, PUT
Access-Control-Allow-Headers: X-Requested-With, Content-Type, Authorization, Auth-Token
Cache-Control: private, no-cache, no-store, must-revalidate
Expires: -1
Pragma: no-cache
Accept-Ranges: bytes
Last-Modified: Wed, 09 Nov 2016 08:20:42 GMT
Content-Type: application/javascript
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Fri, 11 Nov 2016 07:53:10 GMT
Connection: keep-alive
Transfer-Encoding: chunked

请求标题

GET /templates/mypage/src/config/config.js?rel=0.47687368863262236 HTTP/1.1
Host: localhost:3319
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36
Accept: */*
Referer: http://localhost:3319/templates/mypage/?a=1111111
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: en-US,en;q=0.8
Cookie: _ga=GA1.1.1904943772.1473524677
If-Modified-Since: Wed, 09 Nov 2016 20:59:36 GMT

没有尝试过。

如您所见,最新名称为“wwwwwwww”

enter image description here

在我的页面上,我看到“关于我们kkkkkkk”这是旧的。

enter image description here

更新

这真的很奇怪!我刚刚将我的index.html文件重命名为444.html,缓存仍在那里!

我还补充说:

<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">

没有区别!

我想知道是否可能与AngularJS 1.x有关。这是AngularJS 1.x的SPA。

0 个答案:

没有答案