Уведомить пользователей Создание PDF готово и может быть загружено - PullRequest
0 голосов
/ 06 июля 2018

Пользователи могут создавать PDF-файлы в моем приложении, на создание которых уходит некоторое время, поэтому это нужно сделать в фоновом режиме. Нет проблем, но затем возникает задержка, и пользователь должен быть уведомлен о том, что PDF готов.

Итак, первый выбор - отправить электронное письмо со ссылкой на скачивание или push-уведомлением в самом приложении. Я предпочитаю пуш-уведомления, так что я думаю, что ActionCable - это путь? Мое приложение работает на Heroku, поэтому ActionCable также является хорошим выбором или другое решение предпочтительнее?

Тогда есть другое соображение, где хранить сгенерированный PDF, пока пользователь не загрузит его? Я мог загрузить его в Azure / S3 / etc с ActiveStorage или временно сохранить в папке приложения и удалить его после загрузки. Я предпочитаю сделать последнее, потому что PDF существует только в течение нескольких минут и, следовательно, хлопоты по его хранению в облаке на самом деле не нужны?

1 Ответ

0 голосов
/ 06 июля 2018

Здесь у вас очень широкий вопрос, который очень сильно зависит от общих потребностей пользователей и опыта, который вы хотите им получить.

Начну с самой простой части, касающейся временного хранения PDF. Здесь следует иметь в виду несколько вещей.

Я бы сказал, что с точки зрения масштабируемости и безопасности приложений хранение PDF в облаке - это путь. Открытие доступных для записи каталогов на вашем сервере приложений сопряжено с риском. Кроме того, если вам когда-либо понадобится масштабировать до нескольких серверов, это не будет работать. Удаление элементов из облачного хранилища несложно с соответствующими API.

Важно ли, чтобы пользователь каким-то образом проходил аутентификацию для загрузки PDF? Это более сложная задача, если вы отправляете PDF-файл в облачную корзину (если у вас нет PDF-файла с очень сложным, не угадаемым именем, это имя доступно только через приложение, прошедшее проверку подлинности). Если данные менее конфиденциальны, в уведомлении по электронной почте может быть указана прямая ссылка, но вы не сможете легко узнать, получил ли пользователь файл PDF и теперь он готов к удалению.

Что касается уведомления, я бы отправил письмо по нескольким причинам. Простота - это главное. У вас есть опыт работы с ActionCable? На первый взгляд это кажется простым, но при его использовании необходимо помнить о многих вещах: инфраструктура и пользовательский интерфейс являются основными. Кроме того, с точки зрения пользовательского опыта, могут ли пользователи зависать в приложении, ожидая завершения работы PDF? Что произойдет, если они выйдут из системы? Как они узнают, что PDF доступен?

Если временные рамки для создания PDF-файла короткие и абсолютно оптимизированная масштабируемость не имеет большого значения, вы можете рассмотреть более простой механизм, который проверяет пользовательские уведомления (например, простой запрос к таблице user_notifications) для каждого пользовательского действия, и использовать флэш-память или какой-либо другой флаг сеанса, который пользовательский интерфейс может проверить и использовать для асинхронного получения уведомления.

Просто идеи. Невозможно дать однозначные ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...