(如何)我可以指示Chrome / Firefox / IE / ...不要缓存特定网站?

时间:2016-12-10 17:46:39

标签: internet-explorer caching google-chrome-extension firefox-addon safari-extension

我已经构建了一个浏览器扩展,在启动时会调用一个Web服务,从中检索JSON结果。 JSON结果包含将在扩展的弹出窗口中显示的数据。此数据每天使用准备好的预定更新服务至少更新一次。此外,数据在日内不定期地手动更新。

从Web服务检索的数据不会自动适应所做的更改。特别是,扩展从Web服务检索旧结果。 Web服务经过测试并始终返回最新结果,因此这不是服务器端问题(至少不涉及计算,存储和数据提供)。

我注意到有时Web服务似乎会返回旧的结果,然后更新页面刷新后。我相信这是由于客户端或服务器端的一些缓存机制而发生的。

研究该主题并未产生任何有用的资源或材料

是否可以指示扩展程序不缓存来自Web服务的结果和/或指示服务器不允许/提供缓存结果?

非常感谢有关此问题的任何建议和/或资源。

2 个答案:

答案 0 :(得分:1)

一种常用方法是在HTTP GET路径中添加随机扩展 - 一个服务器未使用的参数。通过这样做,浏览器无法使用缓存数据,因为它只是没有任何此URL。服务器将忽略其他参数。

以下是一个示例,请每次调用服务器时更改随机参数(本例中为12345)的值。

// Original URLs
http://www.example.com/myservice
http://www.example.com/myservice?param=data

// With an Additional HTTP Parameter
http://www.example.com/myservice?random=12345
http://www.example.com/myservice?param=data&random=12345

答案 1 :(得分:1)

如果您可以控制服务器软件,那么要将其配置为设置正确的缓存相关HTTP标头值。要防止缓存,您需要设置Cache-Control标头值和Expires标头值。检查此thread以获取跨浏览器解决方案。为了不向客户端传输非陈旧的数据,请再次使用ETagLast-Modified标头值。有关ETag,条件请求和HTTP缓存的详细信息,请检查HTTP caching tutorialHTTP protocol specification