首页 > 解决方案 > 为什么自包含的 htmlwidget 比 htmlwidgets.org 示例页面大得多?

问题描述

html 小部件示例页面的大小与自包含的 html 小部件的大小进行比较:

htmlwidgets 页面加载性能

htmlwidgets 保存性能

# 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)

我正在尝试通过 HTTP API 将 htmlwidgets 提供给 Web 应用程序,因此这些小部件的大小是一个问题。为什么自包含的 htmlwidget 比 htmlwidgets.org 示例页面大得多?我可以做些什么来改变它吗?

注意:我正在考虑生成一个非独立的 html 页面,拆分页面以获取数据,并提供*.min.js文件,但聚合的 js 文件仍然加起来有几 MB。

标签: rhtmlwidgets

解决方案


您在检查时看到的数字较低,因为文件是使用 gzip 压缩的,这是数据到达后压缩的。

检查文件 gzip

我已经运行了您的示例,数据大小的最大问题似乎是plotly-latest.min.js,它在磁盘上占用了大约 2.8 MB 的存储空间。

为了验证这一点,您可以从您提供的示例链接下载版本,它将占用约 1.7 MB 的存储空间。这不一样,但是我在示例网页上看到的本地生成的版本和 R 的版本相差很多(例如:plotly.js v1.16.3,我的 R v1.39.2:),所以它可能归因于在似乎有很多方面的情节发展版本之间的间隔为 2 年(文件具有版权日期范围,最大值为 2016 年和 2018 年)。

至于试图减少文件大小的负担,我最好的猜测是你将使用的 HTTP API 可以提供相同的 gzip 编码。没有其他方法可以传输更少的数据,除非您可以修剪不需要的文件作为后期处理,确定这些将是一个探索性的过程。


推荐阅读