【问题标题】:Notify users PDF creation is ready and can be downloaded通知用户 PDF 创建已准备就绪并可下载
【发布时间】:2018-07-06 07:42:18
【问题描述】:

用户可以在我的应用程序中创建需要一些时间才能生成的 PDF,因此必须在后台作业中完成。没问题,但是会有延迟,必须通知用户 PDF 已准备好。

因此,首选是在应用程序本身中发送带有下载链接或推送通知的电子邮件。我的偏好是推送通知,所以我猜 ActionCable 是要走的路吗?我的应用程序在 Heroku 上运行,那么 ActionCable 是否也是一个不错的选择,还是另一种解决方案更可取?

然后还有另一个考虑,在用户下载之前将生成的 PDF 存储在哪里?我可以使用 ActiveStorage 将其上传到 Azure/S3/etc,或者我可以将其临时存储在应用程序文件夹中并在下载后将其删除。我的偏好是最后一个,因为 PDF 仅存在几分钟,因此不需要将其存储在云中的麻烦?

【问题讨论】:

    标签: ruby-on-rails rails-activejob rails-activestorage


    【解决方案1】:

    您在这里有一个非常广泛的问题,这在很大程度上取决于您希望他们拥有的整体用户需求和体验。

    我将从最简单的部分开始,即 PDF 的临时存储。这里有几件事要记住。

    我想说,从可扩展性和应用程序安全性的角度来看,将 PDF 存储到云中是可行的方法。在应用服务器上打开可写目录是有风险的。此外,如果您需要扩展到多台服务器,这将不起作用。使用适当的 API 从云存储中删除项目并不难。

    用户是否必须以某种方式通过身份验证才能下载 PDF?如果您将 PDF 推送到云存储桶,这将更具挑战性(除非您使用非常复杂、无法猜测的名称命名 PDF,该名称只能通过经过身份验证的应用程序访问)。如果数据不那么敏感,那么您的电子邮件通知可以直接显示链接,但您不会轻易知道用户是否检索了 PDF 并且现在可以将其删除。

    在通知方面,出于几个原因,我会使用电子邮件。简单是主要的。您有使用 ActionCable 的经验吗?它表面上看起来很简单,但在使用它时需要牢记很多事情:基础设施和 UI 是主要的。此外,从用户体验的角度来看,用户是否可能会在应用程序中等待 PDF 完成?如果他们注销会发生什么?他们如何知道 PDF 可用?

    如果生成 PDF 的时间很短,并且绝对优化的可扩展性不是什么大问题,您可以考虑一种更简单的机制来检查每个用户操作的用户通知(例如对 user_notifications 表的简单查询),并使用 Flash 或 UI 可以检查并使用的其他会话标志来异步检索通知。

    只是想法。无法给出明确的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-01
      • 2013-06-12
      • 2018-03-12
      • 2012-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多