На fleetx.io мы формируем множество отчетов для наших клиентов. Мы предоставляем эти отчеты в различных форматах, таких как CSV, Excel и Pdf, и даже настраиваем эти отчеты в соответствии с требованиями наших клиентов.

Например, отчеты о заданиях - отчет об исполнении задания, отчет об ожидающих заданиях, сводный отчет и т. Д. . Отчеты по транспортным средствам - отчет о расходах, отчет о топливе, отчет о работе, отчет о поведении водителя, отчет о ночном вождении и т. Д. Отчет о поездках / истории - отчет о движении, отчет истории, отчет временной шкалы, отчет о нарушении скорости и т. Д. отчет о поездках по ч / б сайтам, отчет о остановках и т. д. Есть много других отчетов. мы генерируем сотни таких различных типов отчетов.

Изначально все эти отчеты мы готовили только в браузере. И мы занимались этим долгое время, пока не столкнулись с множеством проблем с производительностью и несколькими другими трудностями, связанными с удобством использования.

примечание: мы поддерживаем сервер узла для обслуживания нашего приложения реагирования и многих других задач, таких как подготовка отчетов и запуск других веб-хуков.

Итак, с какими проблемами мы столкнулись при подготовке отчетов на стороне клиента (в браузере)?

  1. Поскольку движок javascript является однопоточным, это означает, что он выполняет одну задачу за раз. если мы выполняем все вычисления для подготовки отчета в браузере, пользовательский интерфейс замораживается, и пользователь не сможет выполнять какие-либо действия, пока подготовка отчета не будет завершена. Но на сервере мы можем запускать несколько узлов и можем воспользоваться преимуществами кластеризации узлов (в случае сервера узлов).
  2. Иногда немногим отчетам требуется больше вычислительной мощности и памяти, поэтому мы не можем полагаться на пользовательские машины для этого, поскольку на устройстве пользователя может не хватать памяти или мощности процессора для этого. Но серверы находятся под нашим контролем, мы можем увеличить мощность процессора или памяти по мере необходимости.
  3. Если пользователю нужен отчет, но не сразу, он может потребоваться позже, поэтому нам может потребоваться планирование отчетов, что невозможно сделать в браузере. Но на сервере это легко сделать.
  4. Мы видели несколько ошибок, вызванных ограничениями размера Blob (поскольку мы использовали URL.createObjectURL ( blob )). Загрузка не удалась, поскольку размер сгенерированного отчета превышает размер, ограниченный браузером. Если мы будем генерировать отчеты на сервере, мы можем просто отправить их по электронной почте.
  5. Даже почтовые серверы / клиенты также накладывают ограничение на размер прикрепленных файлов или загружаемых файлов. например, Gmail ограничивает ~ 25 МБ. Чтобы решить эту проблему, мы загружаем отчеты в корзину s3, отправляя ссылку пользователю по электронной почте.

Короче говоря, на сервере у нас есть множество опций и больше возможностей для поддержки больших отчетов, а планирование отчетов простое.

Нашли это полезным? посмотрите эти статьи