【问题标题】:Html output takes too long to loadHtml 输出加载时间过长
【发布时间】:2020-07-22 23:28:27
【问题描述】:

我有这个来自 Rmarkdown 的 html knit 输出,但由于它很重(它是一个在线指南),打开链接时页面需要很长时间才能显示出来。我试图将 rmd 文件分成不同的 rms 子文件,如下所示,但我仍然无法得到结果。谢谢

title: "my_file"
author: "me"
date: "26/02/2020"
output:
  html_document:
    toc: yes
    toc_depth: 3
    toc_float:
      collapsed: yes
      smooth_scroll: yes
  word_document: default
---


```{r child = 'child0.Rmd'}
```

```{r child = 'child1.Rmd'}
```

```{r child = 'child2.Rmd'}
```

```{r child = 'child3.Rmd'}
```

```{r child = 'child4.Rmd'}
```

【问题讨论】:

  • 我认为您需要提供更多详细信息:需要多长时间?文件有多大?但一般来说,您可以将输入分解为单独的源文件,这些文件也产生单独的输出文件,而不仅仅是一个大的 .html 输出,并且应该允许更快地加载它们中的每一个。 blogdown 包支持这一点。
  • 整个 html 输出大约需要 30/40 秒,17.7 MB。如何在我的 rmd 中实现 blogdown?抱歉,我对此很陌生
  • 我会添加一个给出一些细节的答案。

标签: html r hyperlink r-markdown knitr


【解决方案1】:

加快速度的最佳方法可能是将您的网站分成多个页面。您可以使用 blogdown 包来支持这一点,但对于第一次尝试,使用 RStudio 站点生成器更加容易。步骤如下:

  1. 新建一个 RStudio 项目;为项目类型选择“Simple R Markdown website”。这会自动创建三个文件,_site.ymlabout.Rmdindex.Rmd

  2. 决定如何将文件分成单独的页面,并为每个页面创建.Rmd 文件。标头应该类似于about.Rmdindex.Rmd 中的标头,而您 应该为每个页面添加行到_site.yml

  3. 单击“构建”窗格中的“构建网站”(通常在 RStudio 中右上角)。这将处理所有文件并在索引页面打开网站。

HTML 文件将存储在您项目中的_site 文件夹中;您可以将它们从那里复制到您的网络服务器。

【讨论】:

    【解决方案2】:

    调查并尝试减小您的图片/图形的大小:与将您的文本“拆分”为多个“html 页面”同时或替代,其想法是在打开时间和质量之间做出折衷您的图形(和导入的图片)。

    所以,试试吧:

    • 要减小由某些代码块计算的图形大小,请参见下面的示例。
    • 通过调整大小来减小导入图片的大小(如果它们很大)。
    • 利用能够呈现 svg 文件的 html 格式:尝试在 svg 中编码数据的图形表示。不是您的外部图像,只有您的计算会产生图形(文本 + 区域 + 颜色 = 某些图形在 svg 中比在 jpg 或 tif 中“更轻”)。

    为什么要减小文档中图片和图形的大小?如果图像以超高清渲染,则会导致包含大量图像的导出文档的大小非常大,并且需要大量时间来读取内存中的文件(打开)、内存崩溃或冻结等 /em>。因此,文档中图像的大小 (def) 通常是减轻文档重量的关键,对于这两种情况,您可能必须在代码的“图像或图形”部分进行搜索:

    1- 如果您在图像代码块的开头在 Rmarkdown 中指定图像的大小,请检查“fig.height”和“fig.width”是否表示合理的大小,如下所示:

    ```{r name_of_the_chunk, fig.cap="Name_of_fig", fig.height=10, fig.width=8}

    2- 在保存图形或渲染图像或其他任何内容的某些代码中可能存在或需要与以前相同的情况,因此请确保在“程序化”中指明合理的尺寸(“宽度”和“高度”) ' 渲染图像的方式,如果代码块没有指明大小,ie :

    svg("my.svg", width = 8,height =8) [code of your graph]

    也许在ggsave(file="myfile.svg",device = "svg",width =6,height = 6,units = "cm") [code of your graph]中设置了高度和宽度 ...或您用于生成图片的任何功能。

    或者,您可以在编织文档之前使用图形库来调整每个图像的大小(:ImageMagick)。

    美好的一天

    【讨论】:

      猜你喜欢
      • 2020-07-22
      • 2019-06-09
      • 1970-01-01
      • 2012-08-23
      • 2016-06-20
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多