如何取消发布 iCal (*.ics) 提要?

How to unpublish an iCal (*.ics) feed?

我网站上的一项功能允许注册用户为其组织创建日历。我们通过带有查询字符串参数的 URL 为这些日历提供动态生成的 iCal 提要。任何人都可以通过将提供的 URL 输入 Google 日历、Outlook、iPhone 等来订阅这些提要...

这几年来一直运行良好,但我们现在遇到了日历过时或删除的问题。如果注册用户显着更改或删除他们的帐户,则日历将不复存在,提要也无用。我们目前 return 这些请求出现“404 - 未找到”错误(最近从“400 - 错误请求”更改为错误)。

我的问题是,除了 return404,还有什么方法可以让订阅者停止请求错误的 Feed?这是一个 ,其中接受的答案建议 returning 404 或 410,并希望客户会看到错误并手动删除订阅。

到目前为止,这似乎不起作用。我们每小时收到约 10 万个提要请求,其中整整 30% 是针对已删除的日历。

Google、Apple 等在 Feed 反复收到 404 时不放弃吗?其他人是如何处理这个问题的?

如果这只是日志污染的问题,我不会太担心。但是,由于提要是动态生成的,因此每个请求都会命中后端数据库。处理是微不足道的,似乎不会影响性能,但情况只会变得更糟。

抱歉,如果这属于 ServerFault。虽然这个问题影响了我的服务器,但我相信解决方案是程序化的。

我认为没有简单的答案 - 我认为之前有人问过这个问题。

这就像当一些黑客使用您的网站进行登录或 xmlrpc 目标练习或只是寻找漏洞时必须处理所有流量。或者尝试使用散弹枪方法发送电子邮件的垃圾邮件发送者。或者当网络蜘蛛决定过度抓取您的网站时。您必须针对所有无用的流量调整大小。

您可以在数据库之外生成并更新不良 ics URL 的列表,并让脚本检查并在请求接近数据库之前将其退回吗? 基本上尝试尽可能有效地处理问题。

您也可以在帐户删除中尝试添加一个步骤,要求用户在继续之前转到他们的日历程序并删除提要。然而,这可能会导致不好的共鸣,而且可能不会完全解决它。