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

时间:2015-12-04 23:18:48

标签: calendar icalendar

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

这已经运作了好几年,但我们现在遇到过时或删除日历的问题。如果注册用户显着更改或删除了他们的帐户,则日历将不再存在且Feed无用。我们目前返回" 404 - Not Found"这些请求的错误(最近更改为" 400 - 错误请求")。

我的问题是,除了返回404之外,有没有办法让订阅者停止请求错误的Feed?这是similar question,其中接受的答案建议返回404或410并希望客户端看到错误并手动删除订阅。

到目前为止,这似乎并没有奏效。我们每小时收到~100k的Feed请求,其中30%的请求都是已删除的日历。

当谷歌,苹果等人反复获得404饲料时,他们不会放弃吗?其他人如何处理这个问题?

如果这只是原木污染问题,我不会过分担心它。但是,由于源是动态生成的,因此每个请求都会命中后端db。处理过程微不足道,似乎并没有影响性能,但情况只会变得更糟。

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

1 个答案:

答案 0 :(得分:1)

我不相信有一个简单的答案 - 我认为之前有人问过。

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

您可以生成并保持最新的错误网址数据库之外的列表,并在它接近数据库之前检查并退回请求吗? 基本上尝试尽可能有效地处理问题。

您还可以在帐户删除时尝试添加请求用户转到其日历程序并在继续之前删除Feed的步骤。然而,这可能会导致不良影响,无论如何都可能无法彻底修复它。