根据您的问题,我了解到 Akamai 是一个提供静态页面的 CDN。
记住这一点,我的回答如下:
- 场景 2 是否需要 HTTP 缓存管理器?我的意思是为什么我需要在 Akamai 缓存两次页面,同时在我机器的 RAM 上缓存页面?
是或否。取决于您要实现的配置。您必须了解 Akamai 提供的黑白页面(CDN 缓存)与本地存储在用户计算机上的页面不同。
本地缓存 - 检索页面的最快方式。(由 Cach-Control: max-age 指令实现)。如果指定,则甚至无需访问 Akamai 服务器。浏览器从本地缓存本身获取页面。如果 max-age 已过期,则浏览器发送重新验证请求以检查它是否具有最新副本。CDN/Server 对其进行验证,如果副本是最新的,则发送 304(未修改)。否则,使用新的 max-age 提供的页面的最新副本(仅在实施时才发送 max-age)。
所以,关键是如何配置服务器来处理缓存。如果本地缓存是使用 Expires/Cache-Control 实现的,那么您必须添加HTTP Cache Manager
到测试计划中。
2. 仅当对#1 的回答为“是”时:这是将缓存管理器与 cookie 管理器一起使用的强制性/最佳选择吗?
通常,缓存独立于用户。Cookie 管理器是通过发送 Cookie 使用户真实。缓存管理器在加载页面时减少网络延迟(往返)。如果登录用户和匿名用户的缓存机制实现不同,那么您必须考虑这两种情况。否则,不需要 Cookie 管理器。
3. 仅当对#1 的回答为“是”时:我的脚本编写为:测试计划 >> 线程组 >> 吞吐量控制器 >> 80+ HTTP 请求采样器(实际上是页面)。那么我需要在吞吐量控制器级别还是在每个 HTTP 请求采样器内部的 HTTP 缓存管理器?
通常,您HTTP Cache Manager
在层次结构的顶部(在测试计划或线程组下)添加 ,因此它将适用于所有采样器(子级)。
注意:我强烈建议使用Browser -> F12 -> Network tab
. 这给出了发送到加载浏览器的每个 HTTP 请求,并从本地缓存或 CDN 或服务器等中检索响应。
请仔细阅读以下标题以完全了解该行为:
- Cache-Control 标头(max-age 指令)
- ETag 标头
- 最后修改的标题
- 过期
以下是开始的参考:
- http://dev.mobify.com/blog/beginners-guide-to-http-cache-headers/
- https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching
- https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html