为什么独立的 htmlwidget 比 htmlwidgets.org 示例页面大这么多?
Why is the self-contained htmlwidget so much bigger than the htmlwidgets.org example page?
将 html widgets example page 的大小与独立的 html 小部件的大小进行比较:
- 检查示例页面时,整个页面总共有 717KB
- 在生成独立的 html 小部件时,我得到一个约 3MB 的页面,其中仅包含小部件
# 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 向 Web 应用程序提供 html 小部件,因此这些小部件的大小是一个问题。为什么独立的 html 小部件比 htmlwidgets.org 示例页面大这么多?我可以做些什么来改变它吗?
注意:我正在考虑生成一个非独立的 html 页面,,并提供 *.min.js
文件,但聚合的 js 文件仍然加起来几MB。
您在检查时看到的数字较低,因为文件是使用 gzip 压缩进行压缩的,一旦数据到达就会缩小。
我有 运行 你的例子,数据大小的最大违规者似乎是 plotly-latest.min.js
,它在磁盘上占用 ~2.8 MB 的存储空间。
要验证这一点,您可以从您提供的示例 link 下载版本,它将占用约 1.7 MB 的存储空间。这不一样,但是我在示例网页上看到的本地生成的版本和 R 版本相差很多(示例:plotly.js v1.16.3
,我的 R:v1.39.2
),因此它可能归因于在两个版本之间似乎有 2 年的差距(文件具有版权日期范围,最大值为 2016 年和 2018 年)。
就尝试减少文件大小的负担而言,我最好的猜测是您将要使用的 HTTP API 可以提供相同的 gzip 编码。没有其他方法可以传输更少的数据,除非您可以 trim 不需要的文件作为 post 进程,确定这些将是一个探索性进程。
将 html widgets example page 的大小与独立的 html 小部件的大小进行比较:
- 检查示例页面时,整个页面总共有 717KB
- 在生成独立的 html 小部件时,我得到一个约 3MB 的页面,其中仅包含小部件
# 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 向 Web 应用程序提供 html 小部件,因此这些小部件的大小是一个问题。为什么独立的 html 小部件比 htmlwidgets.org 示例页面大这么多?我可以做些什么来改变它吗?
注意:我正在考虑生成一个非独立的 html 页面,*.min.js
文件,但聚合的 js 文件仍然加起来几MB。
您在检查时看到的数字较低,因为文件是使用 gzip 压缩进行压缩的,一旦数据到达就会缩小。
我有 运行 你的例子,数据大小的最大违规者似乎是 plotly-latest.min.js
,它在磁盘上占用 ~2.8 MB 的存储空间。
要验证这一点,您可以从您提供的示例 link 下载版本,它将占用约 1.7 MB 的存储空间。这不一样,但是我在示例网页上看到的本地生成的版本和 R 版本相差很多(示例:plotly.js v1.16.3
,我的 R:v1.39.2
),因此它可能归因于在两个版本之间似乎有 2 年的差距(文件具有版权日期范围,最大值为 2016 年和 2018 年)。
就尝试减少文件大小的负担而言,我最好的猜测是您将要使用的 HTTP API 可以提供相同的 gzip 编码。没有其他方法可以传输更少的数据,除非您可以 trim 不需要的文件作为 post 进程,确定这些将是一个探索性进程。