为什么我必须在 GTmetrix 上测试我的网站两次才能看到 cloudflare 的速度优势?

扎克约翰逊

第一次测试总是很慢。第二个测试显示了 Cloudflare 的速度优势。为什么会这样,这是否意味着用户必须两次加载网站?

科林·M·巴雷特

“Cloudflare 的速度优势”可能是指 Cloudflare 提供的各种独特功能(例如图像压缩、延迟加载 javascript 等)。对于这个答案,我假设您指的是它的 CDN/缓存功能。

本质上,作为 CDN 意味着客户端需要从每个 CDN 边缘节点请求您站点的一个资源,以从源服务器填充该节点上的缓存。

GTmetrix 类似于人类网站访问者,因为如果它是第一个在其缓存超时内从 CDN 边缘节点请求资源的人,则该请求必须一直返回到源服务器,而不是从源服务器响应。更近的边缘节点。但是,第二次从边缘节点请求该资源时,该资源将被缓存,并且由于减少了网络延迟而将更快地提供服务。

如果您还不熟悉 CDN,我建议您阅读更多关于 CDN 如何工作的内容。您可能希望调整缓存标头,以便很少从边缘节点清除相对静态的资源,这将减少这种“首次惩罚”的请求。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我必须在后端登录两次才能登录?

来自分类Dev

为什么我必须在Microsoft Excel上按两次Tab键才能Alt + Tab?

来自分类Dev

为什么我必须将一个字节强制转换为无符号两次才能看到十六进制输出?

来自分类Dev

MATLAB稀疏性-我的情况有速度优势吗?

来自分类Dev

JavaScript:为什么我必须在表中单击两次以执行colorActiveLine函数?

来自分类Dev

为什么我必须在jQuery查询后使用[0]

来自分类Dev

为什么我必须在onLoaderReset中交换swapCursor(null)?

来自分类Dev

为什么我必须在onLoaderReset中交换swapCursor(null)?

来自分类Dev

为什么我必须在mongoDB查询中使用+

来自分类Dev

为什么我必须在数据加载之前点击?

来自分类Dev

为什么我必须在数据加载之前点击?

来自分类Dev

当我将dns记录指向cloudflare时,我当前的主机会停止工作吗?我是否必须在cloudflare中重新托管我的网站?

来自分类Dev

为什么我必须在 https://localhost:80 中键入“:80”才能加载我的网站?

来自分类Dev

为什么我通过Cloudflare连续收到524错误?

来自分类Dev

为什么我必须单击两次才能运行我的功能?

来自分类Dev

为什么我必须输入两次我的回复才能注册?

来自分类Dev

提取api,为什么我必须在响应json()上使用then,试图做出承诺

来自分类Dev

为什么我必须在实现类而不是仅接口类上使用@RequestParam批注?

来自分类Dev

为什么我必须在npm install命令上放“ -g”?

来自分类Dev

提取api,为什么我必须在响应json()上使用then,试图做出承诺

来自分类Dev

GTmetrix 测试中页面加载时间的差异

来自分类Dev

为什么我必须打开我的csv两次?

来自分类Dev

GTmetrix 上的 Gzip 压缩未显示

来自分类Dev

为什么我必须在React中将一个函数传递给'useState'的setter函数?

来自分类Dev

为什么我必须在容器内使用bash -l -c?

来自分类Dev

为什么我们必须在Django设置中提供WSGI_APPLICATION变量

来自分类Dev

为什么我必须在客户端库中公开宏实现的“使用”?

来自分类Dev

为什么我必须在poco的某些方法中提供指针而不是SharedPtr

来自分类Dev

为什么今天我必须在命令前加上“ bundle exec”?

Related 相关文章

  1. 1

    为什么我必须在后端登录两次才能登录?

  2. 2

    为什么我必须在Microsoft Excel上按两次Tab键才能Alt + Tab?

  3. 3

    为什么我必须将一个字节强制转换为无符号两次才能看到十六进制输出?

  4. 4

    MATLAB稀疏性-我的情况有速度优势吗?

  5. 5

    JavaScript:为什么我必须在表中单击两次以执行colorActiveLine函数?

  6. 6

    为什么我必须在jQuery查询后使用[0]

  7. 7

    为什么我必须在onLoaderReset中交换swapCursor(null)?

  8. 8

    为什么我必须在onLoaderReset中交换swapCursor(null)?

  9. 9

    为什么我必须在mongoDB查询中使用+

  10. 10

    为什么我必须在数据加载之前点击?

  11. 11

    为什么我必须在数据加载之前点击?

  12. 12

    当我将dns记录指向cloudflare时,我当前的主机会停止工作吗?我是否必须在cloudflare中重新托管我的网站?

  13. 13

    为什么我必须在 https://localhost:80 中键入“:80”才能加载我的网站?

  14. 14

    为什么我通过Cloudflare连续收到524错误?

  15. 15

    为什么我必须单击两次才能运行我的功能?

  16. 16

    为什么我必须输入两次我的回复才能注册?

  17. 17

    提取api,为什么我必须在响应json()上使用then,试图做出承诺

  18. 18

    为什么我必须在实现类而不是仅接口类上使用@RequestParam批注?

  19. 19

    为什么我必须在npm install命令上放“ -g”?

  20. 20

    提取api,为什么我必须在响应json()上使用then,试图做出承诺

  21. 21

    GTmetrix 测试中页面加载时间的差异

  22. 22

    为什么我必须打开我的csv两次?

  23. 23

    GTmetrix 上的 Gzip 压缩未显示

  24. 24

    为什么我必须在React中将一个函数传递给'useState'的setter函数?

  25. 25

    为什么我必须在容器内使用bash -l -c?

  26. 26

    为什么我们必须在Django设置中提供WSGI_APPLICATION变量

  27. 27

    为什么我必须在客户端库中公开宏实现的“使用”?

  28. 28

    为什么我必须在poco的某些方法中提供指针而不是SharedPtr

  29. 29

    为什么今天我必须在命令前加上“ bundle exec”?

热门标签

归档