google-cloud-networking - 如何验证 Cloud CDN 响应是否是缓存命中(或来自 CDN)
问题描述
我在启用了 Cloud CDN 的 Google Cloud HTTP(S) 负载平衡器后面有一个后端 GCS 存储桶。
我正在尝试根据响应标头回答这些问题:
- 此响应是从 CDN 提供的吗
- 如果是,哪个位置/地区
- 这是缓存命中/未命中吗
这是响应标头。基于cache-control
,理论上,这应该被缓存。但是,我没有看到可以验证 CDN 正常工作的迹象。同样,所有其他标头x-goog-*
似乎Server: UploadServer
都来自 GCS 服务器,而不是 CDN。
accept-ranges: bytes
age: 551
alt-svc: clear
cache-control: public, max-age=3600
content-length: 298303
content-type: image/jpeg
date: Wed, 05 Aug 2020 23:07:33 GMT
etag: "f0b6c60f635c784dd7f34ab9c1527867"
expires: Thu, 06 Aug 2020 00:07:33 GMT
last-modified: Wed, 05 Aug 2020 23:07:16 GMT
server: UploadServer
status: 200
X-DNS-Prefetch-Control: off
x-goog-generation: 1596668836233926
x-goog-hash: crc32c=rD4sZw==
x-goog-hash: md5=8LbGD2NceE3X80q5wVJ4Zw==
x-goog-metageneration: 1
x-goog-storage-class: STANDARD
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 298303
x-guploader-uploadid: AAANsUktJ98kPCHjiR2oBi6N-[...]
例如,Cloudflare 提供以下响应标头:
- 请求在哪里送达:
cf-ray: 5be4505beb76bca2-SEA
- 缓存状态是什么:
cf-cache-status: REVALIDATED
- 我的请求是直接点击 CDN 还是我的后端
server: cloudflare
解决方案
现在{cdn_cache_status}
您可以在响应中设置一个新变量:https ://cloud.google.com/load-balancing/docs/custom-headers#variables
使用 gcloud SDK v309.0.0 或更高版本:
➜ gcloud beta compute backend-services update my-backend --global \
--enable-cdn \
--custom-response-header='Cache-Status: {cdn_cache_status}' \
--custom-response-header='Cache-ID: {cdn_cache_id}'
示例输出:
< HTTP/2 200
< content-type: text/plain; charset=utf-8
< date: Mon, 14 Sep 2020 21:40:05 GMT
< server: Google Frontend
< content-length: 1098
< via: 1.1 google
< cache-control: public, max-age=10
< age: 2
< x-frame-options: DENY
< cache-status: hit
推荐阅读
- postgresql - 如何使用 SQL 查询结果
- css - 更改菜单边框底部的颜色
- python - OperationalError: (pymysql.err.OperationalError) (1045, "Access denied for user" when run spider script
- javascript - 为什么单击类元素时jQuery“最接近”不起作用
- sql - 用 SELECT 在 Teradata 中替换逗号并转换为 INT
- python-3.x - 打印dict中相同键的值
- python - 如何在我的游戏中修复此语法错误?
- javascript - 我如何知道反应组件已完成处理生命周期回调并准备好在我的测试中进行交互?
- math - 方程式问题
- c# - 如何在 OData 请求中添加 Context Guid