我已经构建了一个浏览器扩展,在启动时会调用一个Web服务,从中检索JSON结果。 JSON结果包含将在扩展的弹出窗口中显示的数据。此数据每天使用准备好的预定更新服务至少更新一次。此外,数据在日内不定期地手动更新。
从Web服务检索的数据不会自动适应所做的更改。特别是,扩展从Web服务检索旧结果。 Web服务经过测试并始终返回最新结果,因此这不是服务器端问题(至少不涉及计算,存储和数据提供)。
我注意到有时Web服务似乎会返回旧的结果,然后更新页面刷新后。我相信这是由于客户端或服务器端的一些缓存机制而发生的。
研究该主题并未产生任何有用的资源或材料
是否可以指示扩展程序不缓存来自Web服务的结果和/或指示服务器不允许/提供缓存结果?
非常感谢有关此问题的任何建议和/或资源。
答案 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以获取跨浏览器解决方案。为了不向客户端传输非陈旧的数据,请再次使用ETag
或Last-Modified
标头值。有关ETag
,条件请求和HTTP缓存的详细信息,请检查HTTP caching tutorial和HTTP protocol specification。