问题标签 [google-cloud-cdn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
488 浏览

google-cloud-platform - 使用 URLPrefix 的 Google Cloud CDN 签名 URL

我无法获得与 Google Cload CDN 的 URLPrefix 一起使用的签名 URL。

我已经设置了一个存储桶,它是我的 Cloud CDN 实例的后端存储桶。我已成功设置 URL 签名密钥并为特定路径生成了有效的签名 URL,所有这些都使用https://cloud.google.com/cdn/docs/using-signed-urls?hl=en_US中的说明

使用下面的 signCdnUrl2 函数,我可以为特定资源生成有效的签名 url,例如

https://example.com/foo.mp4?Expires=[EXPIRATION]&KeyName=[KEY_NAME]&Signature=[SIGNATURE]

我想避免“需要为每个不同的 URL 创建一个新签名”,所以我按照https://cloud.google.com/cdn/docs/using-signed-urls?hl=en_US#url-上的说明进行操作前缀以添加 URL 前缀选项。

我无法成功生成带有前缀的有效签名 url。我目前的尝试如下

如果我尝试访问给定前缀下的任何资源(在存储桶的根目录下),我会从云 cdn 收到 403 响应

403响应

来自负载均衡器的日志条目显示它正在将其检测为无效签名

负载均衡器日志

说明中有什么我解释错了,还是我在执行过程中遗漏了一些东西?任何指导将不胜感激。

添加了 Base64Util 代码以确保完整性

更新

使用@elithrar https://stackoverflow.com/a/61315372/4330441提供的实现,我将signedParams 中的样本值换成了我自己的实时值。

结果是这样的:

URLPrefix=aHR0cHM6Ly9zcHluYWwucmNmc29mdHdhcmUuaW8vc2FtcGxlLzM2MHAv&Expires=1588291200&KeyName=my-key-name&Signature=wrbOloT+m31ZnQZei2Csqq0XaGY=

然后,当我附加这些查询参数以在此地址调用云 CDN 端点时:

https://my-server/sample/360p/video.mp4?URLPrefix=aHR0cHM6Ly9zcHluYWwucmNmc29mdHdhcmUuaW8vc2FtcGxlLzM2MHAv&Expires=1588291200&KeyName=my-key-name&Signature=wrbOloT+m31ZnQZei2Csqq0XaGY=

我在 cdn 日志中得到相同的 403 响应和匹配的无效签名

CDN日志

尝试使用两个不同的签名密钥,它们可以很好地签名没有 url 前缀的单个特定 url。

0 投票
1 回答
886 浏览

google-cloud-platform - Google Cloud CDN 签名的 cookie 以存储桶为后端

作为带有 url 前缀的签名 url的替代方法,我正在尝试让签名的 cookie工作。Google Cloud CDN 设置了一个后端存储桶,该存储桶已配置并适用于标准签名 URL。

使用这些Go 示例,我在 nodejs(typescript) 中实现了一个 cookie 签名功能,当提供测试样本数据时,它会产生预期的结果。

然后,当我使用相同的函数为我的实际 cdn 实例生成签名 cookie 值时,我得到以下信息(键名和 url 前缀不是实际的):

URLPrefix=aHR0cHM6L---HdhcmUuaW8v:Expires=1587585646437:KeyName=my-key-name:Signature=2mJbbtYVclycXBGIpKzsJWuLXEA=

使用 firefox 开发工具创建烹饪我在附加 cookie 和未附加 cookie 时得到以下两个结果:

附上签名的 Cookie 没有签名的 cookie

似乎 cookie“Cloud-CDN-Cookie”只是通过 Cloud CDN 传递并直接传递到后端存储桶,在那里它被忽略并给出了标准响应访问拒绝响应。

云平台日志显示没有cdn干预。

附上 cookie 未附上附上 cookie cookie 没有附加cookie

在签名实施或创建和使用 cookie 中我做错了什么吗?

0 投票
2 回答
6499 浏览

firebase - 如何使用 Firebase 存储实现 CDN?

我目前正在开发一款适用于 Android 移动设备的社交媒体应用程序,我对我的应用程序的成本效率有疑问,尤其是使用 Firebase 存储。因此,我想为 Firebase 实现一个 CDN,它将缓存视频和图像,最好使用提供可扩展定价的 CDN 服务(Google CDN 提供这种价格模型)。我一直在到处搜索如何使用 Firebase Storage 实现 google CDN,但没有找到明确的说明。我怎样才能做到这一点?

0 投票
2 回答
1369 浏览

django - 谷歌云存储与谷歌云 CDN

我有几个视频内容,通过我的 Django Google App Engine 应用程序通过我的 Google Cloud Storage 共享,这些视频内容带有与到期时间相关的签名 url 机制。

尽管已在 [此处][1] 中解释了 GCS 和 Google Cloud CDN 的可能使用关系,但这是否适用于通过 Google Cloud Storage 流式传输视频内容(MP4 或带有 MP4 的 MPEG-DASH),因为它被提到具有隐式 CDN 本身。

如果使用 Google CDN 是广播在线视频内容的一种更明智的方式,那么实现这一目标的最佳策略是什么,我如何在当前的 Google Cloud Storage 实施之上使用 Google Cloud CDN?

0 投票
1 回答
257 浏览

google-cloud-platform - 仅限 Google Cloud CDN 缓存媒体文件夹

我正在使用一个 magento 应用程序,我只需要缓存图像存储在 Google Cloud CDN 上的“/媒体”路径。

实际上,我已经配置了一个实例组,我的 VM 在其中运行整个网站应用程序,并通过后端部分的复选框启用了 Google Cloud CDN。

似乎每个 http 请求都发送到 Google Cloud CDN。

如何只缓存媒体路径文件?

0 投票
1 回答
549 浏览

cdn - Google Fonts /icon 和 /css CDN 链接之间的区别?

这是关于

https://fonts.googleapis.com/icon
https://fonts.googleapis.com/css

我在使用 Google Fonts 的 Google Material Icons CDN 时注意到这一点的用法。一些来源列出了 fonts.googleapis.com/ css ?family=Material+Icons而其他来源列出了 fonts.googleapis.com/ icon ?family=Material+Icons。两者的工作方式似乎完全相同。我只是想知道是否有人知道任何技术差异?

奇怪的是,我也能做fonts.googleapis.com/icon ?family= Roboto |Noto+Sans之类的事情,我只是好奇。谢谢!

0 投票
1 回答
153 浏览

google-cloud-platform - Google 存储桶(google api 链接)与 Cloud CDN 集成

尊敬的前辈!

我在 GCE 上托管了一个网站,并将所有静态内容存储在 GCS 存储桶上。然后使用 google API 链接访问内容,例如https://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME] ..。

现在 API 链接作为https://www.example.com/post/[random post number] 嵌入在我网站的网页上(这是一个 html 链接,我每次都需要提供更新的副本,所以我设置了一个cookie 以避免在 CDN 中缓存)

我在负载均衡器后端 GCE 上启用了 Cloud CDN。我的理解是,网页中嵌入的静态内容链接会自动缓存在 CDN 中,因为存储桶访问是公开的。

在使用 cURL 进行验证后,我知道每当我使用 API 链接 ( https://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME] ) 访问对象时,内容都会缓存在 CDN 中,并且每当我使用我的站点链接时(https://www.example.com/post/ [随机帖子号]),内容不被缓存。

请建议任何方法来缓存 clod CDN 中存储桶上的内容,其链接嵌入在动态内容 url 中,每次都必须重新获取。

提前致谢

0 投票
2 回答
631 浏览

cookies - 谷歌云 CDN 变化:cookie 响应永远不会被缓存命中

我正在使用 Google Cloud CDN 缓存 HTML 页面。

我已经根据文档配置了所有正确的标题,并且页面缓存很好。现在,我想更改它,使其仅在请求没有 cookie 时缓存,即没有cookie设置标头。

我的理解是,这只是更改我的源服务器以向页面的所有vary: cookie响应添加标头,然后仅添加缓存标头并且在请求上没有设置标头的情况。Cache-Control: publicCache-Control: max-age=300cookie

但是,这不起作用。使用curl我可以看到,vary: cookie当我发送带有和不带有 cookie 的请求时,所有缓存标头(标头)都按预期设置,但我从来没有在没有 cookie 的请求上获得缓存命中。

深入研究 Cloud CDN 日志,我看到每个没有cookie标头的请求都cacheFillBytes填充了与响应大小相同的数字 - 而不是针对cookie标头设置了值的请求(如预期的那样)。

因此,看起来 Cloud CDN 正在尝试按预期填充没有 cookie 的请求的缓存,只是我从来没有收到缓存命中- 即cacheFillBytes每次都cacheHit: true没有出现在日志中。

有没有人遇到过类似的事情?我已经三重检查了我所有的标头是否有错别字,实际上只是删除vary: cookie标头就可以使缓存按预期工作,所以我几乎可以肯定我的配置在标头和 Cloud CDN 认为可缓存的内容方面是正确的。

Cloud CDN 是否应该vary: cookie像我期望的那样处理?文档建议它处理任意变化的标头。如果是这样,为什么我会cacheFillBytes每个请求上看到Cache-Control: publicCache-Control: max-age=300设置响应,但cacheHit: true在任何后续请求中都curl看不到 a正在填充几个不同的边缘缓存)?

0 投票
1 回答
207 浏览

google-cloud-logging - Google Cloud CDN 未记录无服务器 Negs

我将 Google Cloud CDN 与我的 HTTPS 负载均衡器一起使用,并将 Cloud Run 作为我的后端服务。一切正常,并且从 CDN 提供资产。我可以通过 cUrl 命令验证缓存命中,并看到“Age”标头随着时间的推移而增加。

但是 - 这些命中(谷歌云 CDN)没有产生任何日志。

如果我在 CDN 上查看我的 URL 映射的监控选项卡,我会在图表所在的部分收到以下消息:

我的 CDN 已经运行了整整一周。

当我关注这篇文章时:https ://cloud.google.com/cdn/docs/logging 当我让我的日志视图页面构建查询时,以下资源不可选择:

当我关注这篇文章时:https ://cloud.google.com/load-balancing/docs/https/https-logging-monitoring

我看不到复选框

在此处输入图像描述

我还可以在我的“后端服务详细信息”屏幕上看到日志记录已关闭(屏幕截图底部),但是当我编辑它时,我没有选择打开它......

在此处输入图像描述

我的结论是没有生成 CDN 日志,并且设置不正确。但我不知道还能去哪里看,因为 CDN 日志记录应该是自动发生的。

我还可以做些什么?

这是我设置连接到负载均衡器和 CDN 的无服务器 neg 所遵循的文档。

https://cloud.google.com/load-balancing/docs/negs/setting-up-serverless-negs

0 投票
2 回答
1404 浏览

google-cloud-networking - 如何验证 Cloud CDN 响应是否是缓存命中(或来自 CDN)

我在启用了 Cloud CDN 的 Google Cloud HTTP(S) 负载平衡器后面有一个后端 GCS 存储桶。

我正在尝试根据响应标头回答这些问题:

  • 此响应是从 CDN 提供的吗
  • 如果是,哪个位置/地区
  • 这是缓存命中/未命中吗

这是响应标头。基于cache-control,理论上,这应该被缓存。但是,我没有看到可以验证 CDN 正常工作的迹象。同样,所有其他标头x-goog-*似乎Server: UploadServer都来自 GCS 服务器,而不是 CDN。

例如,Cloudflare 提供以下响应标头:

  • 请求在哪里送达: cf-ray: 5be4505beb76bca2-SEA
  • 缓存状态是什么:cf-cache-status: REVALIDATED
  • 我的请求是直接点击 CDN 还是我的后端server: cloudflare