Почему автономный htmlwidget намного больше, чем примерная страница htmlwidgets.org? - PullRequest
0 голосов
/ 20 ноября 2018

Сравнение размера страницы примера html с размером автономного виджета html:

  • при проверке страницы примера я получаю общее717 КБ для всей страницы

htmlwidgets page load perf

  • при создании автономного HTML-виджета я получаю страницу ~ 3 МБкоторый содержит только виджет

htmlwidgets save perf

# Code to generate the html widget
library(ggplot2)
library(plotly)
library(htmlwidgets)
p <- ggplot(data = diamonds, aes(x = cut, fill = clarity)) +
  geom_bar(position = "dodge")
p <- ggplotly(p)
htmlwidgets::saveWidget(p, "path/to/my/widget.html", selfcontained = TRUE)

Я пытаюсь передавать htmlwidgets в веб-приложение через HTTP API, поэтомуРазмер этих виджетов является проблемой.Почему автономный htmlwidget намного больше, чем примерная страница htmlwidgets.org?Могу ли я что-то сделать, чтобы это изменить?

Примечание. Я рассматриваю возможность создания автономной HTML-страницы, разбиения страницы для получения данных и предоставления *.min.jsфайлы, но агрегированные файлы js по-прежнему составляют несколько МБ.

1 Ответ

0 голосов
/ 10 января 2019

Числа, которые вы видите при проверке, являются более низкими, поскольку файлы сжимаются с использованием сжатия gzip, которое является сдутым после получения данных.

inspect files gzip

Я запустил ваш пример, и самым большим нарушителем для размера данных является plotly-latest.min.js, который на диске занимает ~ 2,8 МБ памяти.

Чтобы проверить это, вы можете скачать версию из примерассылка, которую вы предоставили, и она будет занимать ~ 1,7 МБ памяти.Это не то же самое, однако версии, которые я вижу локально сгенерированными и R на веб-странице примера, отличаются друг от друга версиями (Пример: plotly.js v1.16.3, My R: v1.39.2), поэтому, скорее всего, это связано с сюжетной разработкойв промежутке между версиями, который, по-видимому, составляет 2 года (файлы имеют диапазоны дат авторского права, максимальные значения - 2016 и 2018 годы).

Что касается попыток уменьшить нагрузку на размер файла, я думаю, что вашаHTTP API, который вы собираетесь использовать, может предложить ту же кодировку gzip.Другого способа передачи меньшего количества данных нет, если только вы не можете обрезать ненужные файлы как последующий процесс, определяя, что это будет исследовательский процесс.

...