在我的 Discourse 论坛上,点击通知铃铛图标时,一直显示加载动画。加载菜单中提示“慢一点,该 IP 地址的请求过多”。我正在使用 Cloudflare。
您具体是如何使用 Cloudflare 的?
这是一个非常相关的话题:
您是否按照那里的三个步骤进行了操作?
请禁用 Cloudflare,它正在破坏您的网站。
我使用的是 Cloudflare 的免费套餐,并启用了 5 美元的 Cloudflare SSL 订阅。目前没有任何 Cloudflare 功能被启用:Rocket Loader 已关闭,所有其他优化(如代码压缩等)也均已关闭,而像 Railgun 等其他功能在免费套餐中甚至不可用。缓存设置也已配置为尊重现有的源站头部信息。之前一切正常,但我刚刚意识到,我通过访问 /admin/upgrade 升级到了 master Git 分支,这可能导致了问题。之后我虽然移除了相关脚本和引用,但系统仍在反复检查通知。目前只有通知功能引发了问题,其他一切运行正常。
我使用 Cloudflare 来分发存储在 Amazon S3 并通过 CloudFront 托管的文件。如果我不使用 Cloudflare,我的成本将会上升。Cloudflare 仅作为 DNS 和 SSL 提供商使用,其优化功能和大部分特性均已关闭,且许多功能在免费套餐中根本不可用。您认为在我的情况下,Cloudflare 仍然是问题的根源吗?
我是否应该尝试重新构建以解决这些问题?
附注:我是 StackOverflow、CodingHorror 博客和 Discourse 的忠实粉丝。致敬 ![]()
首先尝试禁用 CloudFlare(基本 DNS 除外)作为实验。如果问题消失,这就说明了一些情况。
我已禁用 Cloudflare 的橙色云朵模式,并等待浏览器显示 Let’s Encrypt 的 SSL 证书(而非 Cloudflare),以确认内容直接从服务器获取而非经过 Cloudflare。随后我重新构建了项目,但现在点击用户菜单和通知图标时,仍然出现以下错误:
Uncaught (in promise) DOMException: Quota exceeded.
_application-977ce16935600e0a620c1ea565154ab68e46f60a9fe0f207139e0f2128dd9474.js:77250 Uncaught TypeError: Cannot read property 'dasherize' of undefined
at s.itemHtml (_application-977ce16935600e0a620c1ea565154ab68e46f60a9fe0f207139e0f2128dd9474.js:77250)
at _application-977ce16935600e0a620c1ea565154ab68e46f60a9fe0f207139e0f2128dd9474.js:77390
at _ember_jquery-d1d89874d5f08a664c68007c6c2eef5e3bb1cbd8058291fce7818d8ef4ded8ca.js:39008
at t.u.Mixin.create.c.forEach (_ember_jquery-d1d89874d5f08a664c68007c6c2eef5e3bb1cbd8058291fce7818d8ef4ded8ca.js:38995)
at t.u.Mixin.create.c.map (_ember_jquery-d1d89874d5f08a664c68007c6c2eef5e3bb1cbd8058291fce7818d8ef4ded8ca.js:39007)
at s.html (_application-977ce16935600e0a620c1ea565154ab68e46f60a9fe0f207139e0f2128dd9474.js:77389)
at s.value (_application-977ce16935600e0a620c1ea565154ab68e46f60a9fe0f207139e0f2128dd9474.js:80621)
at s.value (_application-977ce16935600e0a620c1ea565154ab68e46f60a9fe0f207139e0f2128dd9474.js:80371)
at s (_vendor-7fd29296ee54f8a7ced9508b106a09ec4aae4912ed1cf10eceb7eb2acca03309.js:20669)
at t.exports (_vendor-7fd29296ee54f8a7ced9508b106a09ec4aae4912ed1cf10eceb7eb2acca03309.js:20652)
打开该文件后,显示内容如下:
define("discourse/widgets/quick-access-notifications", ["discourse/lib/ajax", "discourse/widgets/widget", "discourse/widgets/quick-access-panel"], function (_ajax, _widget, _quickAccessPanel) {
"use strict";
(0, _widget.createWidgetFrom)(_quickAccessPanel.default, "quick-access-notifications", {
buildKey: function buildKey() {
return "quick-access-notifications";
},
emptyStatePlaceholderItemKey: "notifications.empty",
markReadRequest: function markReadRequest() {
return (0, _ajax.ajax)("/notifications/mark-read", { type: "PUT" });
},
newItemsLoaded: function newItemsLoaded() {
if (!this.currentUser.enforcedSecondFactor) {
this.currentUser.set("unread_notifications", 0);
}
},
itemHtml: function itemHtml(notification) {
var notificationName = this.site.notificationLookup[notification.notification_type];
return this.attach(notificationName.dasherize() + "-notification-item", notification, {}, { fallbackWidgetName: "default-notification-item" });
},
findNewItems: function findNewItems() {
return this._findStaleItemsInStore().refresh();
},
showAllHref: function showAllHref() {
return this.attrs.path + "/notifications";
},
hasUnread: function hasUnread() {
return this.getItems().filterBy("read", false).length > 0;
},
_findStaleItemsInStore: function _findStaleItemsInStore() {
return this.store.findStale("notification", {
recent: true,
silent: this.currentUser.enforcedSecondFactor,
limit: this.estimateItemLimit()
}, { cacheKey: "recent-notifications" });
}
});
});
刚注意到,这个问题仅在我以管理员用户登录且同时显示 mini_profiler 时出现。我使用普通用户登录后,功能正常。
参见:
或许可以清除所有本地存储。
我已经清除了存储空间,现在不再显示配额错误。但是,它仍在发起多次请求,导致我收到 429 响应,提示需要降低速度。我现在已不再使用 Cloudflare(是否也应该在 app.yml 中注释掉 Cloudflare 模板?)。错误在 dasherize 处依然相同。这些错误仅出现在管理员用户身上,并且我会很快被限流。
您正在运行哪些非官方插件和主题?有可能是其中一个产生了大量请求负载。
作为入门建议,我会注释掉所有未使用的插件。即使已安装但被禁用,它们仍会给系统带来负担。
首先禁用所有第三方插件(即没有绿色对勾的插件)。这很可能就是问题所在。
移除所有没有绿色对勾的项目并重新构建。
请在另一台计算机上确认是否出现相同的故障,可能是磁盘空间不足或存在其他本地问题。
在我的移动浏览器上它能正常工作:slight_smile: 我会查一下,看看本地出了什么问题。可能是磁盘空间不足或磁盘驱动器速度慢导致的。不管怎样,能卸载掉几个不必要的插件真是太好了:laughing:
看来我仍然面临一些用户遇到的这个问题。
我认为我的问题与下面提到的问题有关,而且我在升级到该版本后遇到了此问题:
我无法确定是什么导致了这个问题。它对新用户有效,但对其他用户却无效。我之前使用了一个 Discourse 关注插件,后来将其注释掉了,现在出现了这个问题。这是否可能是因为移除了该插件导致的?我猜测这可能只影响那些之前有关注者或使用过该插件的用户。这确实是一个大胆的假设。这个插件真的可能是罪魁祸首吗?
是的,这是有可能的。由于我们并不拥有该插件,因此无法确定是否属实。您可以尝试重新启用该插件并进行检查。如果问题得到解决,请在该插件的主题帖中报告此问题。
@Falco 是的,这确实解决了这个问题。我已重新添加了 discourse-follow 插件,问题已解决。谢谢 ![]()




