NallDev
(NallDev)
1
你好,
我昨天安装了一个 Discourse 实例,今天页面显示为黑色,在控制台中我看到:
拒绝加载脚本 'https://ajax.cloudflare.com/cdn-cgi/scripts/95c75768/cloudflare-static/rocket-loader.min.js',因为它违反了以下内容安全策略(Content Security Policy)指令:"script-src 'unsafe-eval' 'report-sample' [url]/logs/ [url]/sidekiq/ [url]/mini-profiler-resources/ [url]/assets/ [url]/brotli_asset/ [url]/extra-locales/ [url]/highlight-js/ [url]/javascripts/ [url]/plugins/ [url]/theme-javascripts/ [url]/svg-sprite/"。注意,未显式设置 'script-src-elem',因此使用 'script-src' 作为回退。
在获取脚本时收到了错误的 HTTP 响应代码(404)。
我该如何修复这个问题?
请在 Cloudflare 控制面板中为您的网站禁用 Cloudflare。特别是 Rocket Loader 功能与 Discourse 完全不兼容。
mreach
(M. Reacher)
3
能否请您详细说明一下,为什么这“绝对”不兼容?我在其他经过深度定制和优化的 Rails 应用中成功使用了它(通常只需稍作调试即可)。我很好奇,既然 CloudFlare 的服务套件被广泛使用,为什么 Discourse 还没有进行重构以使其与全套 CloudFlare 服务兼容?
问问 CloudFlare 吧,这是他们的代码,不是我们的。
Stephen
(Stephen)
6
这里实际上没有任何好处或激励。你似乎假设 Cloudflare 能比 Discourse 官方开发团队更好地优化 Discourse 代码。你的依据是什么?
Cloudflare 作为缓存是可以的,但必须禁用所有性能功能,否则你的安装将完全不受支持。
mreach
(M. Reacher)
7
从我在这里看到的一些讨论来看,在各种测试中,有意义的首次绘制(Meaningful First Paint)出现得不够快的问题似乎确实存在。我原本希望 Rocket Loader 能够在相关领域实际开展解决工作期间,进一步减少这一问题。
不,那会让情况更糟。Discourse 是一个 JavaScript 应用,因此首次加载会消耗更多资源,因为应用需要下载到浏览器的 JavaScript 运行时中。
从技术上讲,它_应该_能正常工作,但如果不行,那是因为 Cloudflare 的代码写得不好。如果你希望进一步解决这个问题,可以给他们发邮件。我们无法控制 Cloudflare 的代码,因为我们……不是 Cloudflare。
希望这已经足够清楚了。