r - 为什么自包含的 htmlwidget 比 htmlwidgets.org 示例页面大得多?
问题描述
将html 小部件示例页面的大小与自包含的 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 将 htmlwidgets 提供给 Web 应用程序,因此这些小部件的大小是一个问题。为什么自包含的 htmlwidget 比 htmlwidgets.org 示例页面大得多?我可以做些什么来改变它吗?
注意:我正在考虑生成一个非独立的 html 页面,拆分页面以获取数据,并提供*.min.js
文件,但聚合的 js 文件仍然加起来有几 MB。
解决方案
您在检查时看到的数字较低,因为文件是使用 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 编码。没有其他方法可以传输更少的数据,除非您可以修剪不需要的文件作为后期处理,确定这些将是一个探索性的过程。
推荐阅读
- javascript - 如何从角度 4 的组件中获取子注入器(服务)列表?
- css - 如何解决 Visual Studio 的 sass-compiler 中的编译错误“未定义”?
- python - Django中不存在的模板变量
- java - 将 PicoContainer 与两个 IntelliJ 插件一起使用
- python - Python 维恩图 - 填充和边缘颜色
- php - Api Platform Softdeleteable 扩展不会过滤已删除的实体,但会正确设置删除日期
- javascript - 如果数据为空,则 Vis.js 时间轴不可见
- excel - 展位预订以显示 excel 中可用的内容
- javascript - 使用 Javascript 读取目录中的所有 png 文件并将它们显示在 HTML 页面上
- c# - 带有 webpack 和 typescript 的 Asp.Net Mvc Core 2.1 ReactRedux