我有一个关于 CDN 技术的问题。
我的理解是,CDN 只能缓存我网站上的文件,而无法缓存来自其他网站的热点链接文件,对吗?
我将目录文件(mps 和图片)存储在另一台服务器上,并在我的 Discourse 站点中通过热点链接引用它们。我的理解是,这类文件不会被 CDN 缓存,对吗?有没有办法也能缓存这些热点链接文件?
我有一个关于 CDN 技术的问题。
我的理解是,CDN 只能缓存我网站上的文件,而无法缓存来自其他网站的热点链接文件,对吗?
我将目录文件(mps 和图片)存储在另一台服务器上,并在我的 Discourse 站点中通过热点链接引用它们。我的理解是,这类文件不会被 CDN 缓存,对吗?有没有办法也能缓存这些热点链接文件?
除非你明确告知 Discourse 不要这样做,否则它会将这些远程图片拉取到自己的图片存储中。以下内容假设你已经关闭了该功能。
你应该将该站点置于 CDN 之后,然后将 CDN 的 URL 提供给 Discourse。
如果你在图片站点前部署了 CDN,但向 Discourse 提供的是源站 URL,你可以使用内置功能将源站 URL 替换为 CDN URL。
我的理解是否正确:如果在 Discourse 中启用 CDN 功能并关闭将源文件保存到 Discourse 的选项,CDN 服务将会缓存这些外部文件,并且 Discourse 会将所有指向其他网站热链接文件的链接替换为 CDN 链接?
我怀疑 CDN 无法缓存来自其他网站的热链接外部文件。有人能确认这一点吗?
仅供参考——我刚刚发布了一个新帖子,介绍如何使用 AWS CloudFront 设置全站 CDN 加速(以及 SSL 终止),链接如下。此过程存在风险,请谨慎操作。
当出现错误 Reason: CORS header ‘Access-Control-Allow-Origin’ missing 时,是否仍然需要它?
我在 Github 上找不到任何使用该变量的地方:
编辑:设置注释仍然说需要它,添加之后确实有效。所以我就接受了 ![]()
在2023年,以下四条规则是否仍然需要严格遵守?例如,如果我使用Akamai,它被设计用来加速主域名及其CDN。有人能提供以下规则的精简配置吗?例如,消息总线和长轮询是否仍需要请求源站?这些设置应该放在哪里?长轮询的基础URL似乎已从管理仪表板中移除?
有一些高级选项允许您从不同的域提供消息总线请求。不过,这非常复杂。
因此,“长轮询基 URL”必须通过 Rails 控制台进行设置。因为它已从管理员仪表板中移除。如果该设置仍然需要使网站在完整站点 CDN 模式下正常运行,我一定错过了之前发布的任何原因。
同样,“DISCOURSE_ENABLE_CORS: true”必须在 app.yml 中设置。
您应该通过 app.yml 中的环境变量 (DISCOURSE_LONG_POLLING_BASE_URL) 来设置它。它被隐藏起来是因为很少有人需要设置它,并且假设如果您这样做,您知道自己在做什么。
谢谢你,@pfaffman!我早就该知道所有这些大写的变量都应该放在 app.yml 中。
那么,message-bus 的用例将在什么时候生效?例如,回复帖子导致通知等?我将进行用例测试,以确保在未设置 DISCOURSE_LONG_POLLING_BASE_URL 的情况下,我的站点上的 message-bus 是否按预期工作。
long_polling_base_url 是一个隐藏的站点设置,但如果你不在 app.yml 中使用环境变量,则可以从 rails 控制台进行设置:
此列表无疑为 Discourse 提供了更多见解。
我已经设置了 CDN 与我的网站,它已到达边缘缓存,但尚未遇到其响应标头中的消息总线问题,但仍然感觉不牢固。也没有设置 CORS 设置。
Cache-Control: must-revalidate, private, max-age=0
您好,
我在另一个帖子 Full Site CDN Using AWS CloudFront - #2 by Hyan 中发布了我的问题。我做了同样的配置,并保持 #DISCOURSE_CDN_URL: https://discourse-cdn.example.com 不变。我能将其设置为与网站相同的 URL 吗?例如,http://forum.example.com。否则,资产 URL 将是相对路径,没有域名。
我不推荐使用 Cloudflare 作为 CDN。有些人会使用。也许他们能提供帮助。
编辑:哦,抱歉。这是“全站 CDN…”也许我不应该在这里贡献。
不,我使用的是 Akamai CDN,它支持缓存动态内容。
从这个帖子来看,我应该将 DISCOURSE_CDN_URL 设置为非完整站点 CDN 的设置方式,即使 URL 与网站 URL 相同。我不确定设置它是否会导致我的站点损坏和其他不可逆转的后果,最终我不得不从头开始重新安装软件。在这个帖子 Full Site CDN Using AWS CloudFront 中,作者没有设置 DISCOURSE_CDN_URL 并保持不变,并且不需要单独的 URL 来服务 message-bus/long-polling。我使用了这个解决方案,到目前为止我的网站运行良好。该解决方案唯一的缺点是页面源代码中有许多相对 URL(没有基本 URL,因为 DISCOURSE_CDN_URL 值为空),这使得它看起来不像一个生产级别的网站。
在我跟进我的问题时,我发现了一篇与我在这篇帖子中询问的内容相似的帖子 CloudFront not caching static files - #4 by Falco
感谢 @Falco 的回答,在这种完整的站点 CDN 设置中,我是否可以将 DISCOURSE_CDN_URL 设置为与 DISCOURSE_HOSTNAME 相同?因为我假设完整的站点 CDN 意味着 CDN 加速主机名的 URL,这使得 DISCOURSE_CDN_URL 与 DISCOURSE_HOSTNAME 相同。但是这里在 meta 上没有关于这方面的像样文档。
嘿,有兔子模板吗?
你不需要为此使用模板,只需将 Bunny 配置为从你的 Discourse 站点拉取,并在 app.yml 中将 DISCOURSE_CDN_URL 设置为 Bunny 提供的 CDN 端点。
我尝试使用 Bunny DNS 和我的 VPS IP 地址将其设置为“CDN 加速”。它确实可以工作,但所有用户都显示相同的 IP 地址。
我找到了配置,它被称为“X-Real-Ip”。