根据this https://developer.chrome.com/extensions/webRequest#CachingAPI 文档,这是我找到的唯一描述内存缓存的来源:
Chrome 使用两种缓存——磁盘缓存和非常快的内存中缓存
缓存。内存缓存的生命周期附加到生命周期
渲染进程的一部分,大致对应于一个选项卡。要求
从内存缓存中得到的响应对于 Web 请求是不可见的
API。如果请求处理程序更改其行为(例如,
根据阻止请求的行为),一个简单的页面
刷新可能不尊重这种改变的行为。为了确保
行为发生变化,调用 handlerBehaviorChanged() 进行刷新
内存中的缓存。但不要经常这样做;刷新缓存是
非常昂贵的操作。你不需要打电话
注册或取消注册事件后的 handlerBehaviorChanged()
听众。
我需要更好地了解内存缓存。具体来说,我需要 Chrome 在每次访问网站时生成完整的 webRequest/资源瀑布,包括刷新页面。显然,如果使用内存缓存,则情况不可能如此。
当我创建新选项卡时,内存缓存是否会为新选项卡清理干净?
“非常昂贵的操作”在数量上意味着什么?
如果我每次在同一选项卡中重新加载页面时都调用 handlerBehaviorChanged() ,这会保证完整的瀑布流吗?在这种情况下,10 分钟内 20 次的限制似乎相当低。
非常感谢任何帮助,谢谢!
就您而言,我认为您的问题在于长期缓存而不是内存缓存。在资源瀑布中,多个请求可以标记为已缓存。如果您愿意,可以通过多种方式来避免这种情况:
- 按 CTRL+F5,而不是正常重新加载 (F5)。这将重新加载所有资源,我通常按 CTRL+F5 几次,尽管一次就足够了。
- If you need that your page reload some specific resources from server each time any user visit you then you can use some of this techniques:
- 最优雅的:配置您的服务器以在 HTTP 标头中返回缓存策略https://developer.mozilla.org/es/docs/Web/HTTP/Headers/Cache-Control https://developer.mozilla.org/es/docs/Web/HTTP/Headers/Cache-Control
- 在您的请求中添加每次都不同的更改获取参数,例如使用毫秒。例如:https://www.gravatar.com/avatar/c6252fcbc3ce5fc144c11dedd75bce29?_=1501147200802 https://www.gravatar.com/avatar/c6252fcbc3ce5fc144c11dedd75bce29?_=1501147200802其中 1501147200802 每次重新加载都是不同的。这会混淆缓存,因此每次请求时都会从服务器加载资源。
请记住仅将这些规则应用于您真正需要的资源。否则,您的网络服务器将因不必要的请求而过载。
正如文档中提到的:内存缓存不适用于不同的页面渲染,即使对于相同的 url 和相同的选项卡 (内存缓存附加到渲染进程的生命周期),所以我认为这不适用于您的情况。每次显示页面时,渲染周期都会结束,如果再次渲染,则会开始另一个周期。例如:当第一次加载图像时,会出现在瀑布中,但同一页面上的后续请求不会出现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)