【问题标题】:Unsubscribe from webcal取消订阅 webcal
【发布时间】:2020-06-15 17:37:37
【问题描述】:

我想在我的网站中添加一个 ics 链接。用户可以将此网址添加到他们最喜欢的日历应用程序并查看他们即将发生的事件。

我的用户使用我的网站几个月然后离开(这是一个教育网站)。所以我的问题是:

有没有办法(也许在 ics 协议中?)自动从我的 ics 网址取消订阅我的用户,以避免“终身”不必要的请求?

例如,Mac 上的 iCal 会每小时向 url 发出一个请求以获取新数据。但是一旦用户离开了,就永远不会有新的数据了,所以请求是没有用的。

感谢您的帮助!

【问题讨论】:

  • 他们只是下载 .ics 文件?所有用户都链接到同一个文件?
  • 它不是一个文件,它是一个 url,每个人都有自己的 url(类似于 /events.ics?token=token-of-the-user)。使用 url 而不是文件让我更灵活(添加事件或更改事件的位置),而无需用户将另一个文件添加到其日历中
  • Sooo 一些服务器端代码是否在 .ics URL 后面运行?您将不得不在这里向我们提供更多信息。您不能让客户端自动从其客户端中删除 URL 注册,但如果我没记错的话,您可以填充缓存或状态码。
  • 是的,url后面有服务器端代码。我将有一些缓存策略来避免过于频繁地生成数据。但我想知道是否可以“阻止” ical 客户端请求 url。
  • 查看为类似问题提供的答案(使用 http 代码)stackoverflow.com/questions/60022347/…

标签: calendar icalendar webcal


【解决方案1】:

您可以要求人们取消订阅,或者通过一个虚拟的每日活动“不再更新,请取消订阅”来使其成为可取的

通过向请求系统返回适当的 http 返回码来强制取消订阅 - 可能是 410(已消失)而不是 404。根据其描述,410 是最合适的:“网址不再存在并且这种情况很可能是永久性的。” https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/410

可以为每个用户提供一个网址。确保它在生命周期结束时返回 410(不仅仅是一个空文件)

接收设备不只是悄悄地取消订阅该网址。通常他们会显示错误。理想情况下,人类应该取消订阅。也许一封包含有关如何退订的快速提示的电子邮件可能最适合您的情况?至少那时你已经告诉他们了。

我发现我自己的日历应用程序中有很多垃圾日历网址。如果我开始收到错误,我会取消订阅它们(或者如果有垃圾事件,我可能会取消订阅或“隐藏”它。

向请求应用程序传递信息的其他方式,可能会减少服务器上的负载:

标题中的上次修改时间https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Last-Modified https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After(没有“从不”!)

您还可以在 ics 文件中包含非官方(非 RFC5545)扩展:例如:X-PUBLISHED-TTL - 订阅日历的推荐更新间隔。可以将其设为非常长的间隔。 见https://en.wikipedia.org/wiki/ICalendar#Calendar_extensions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2017-12-18
    • 2012-03-14
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多