【问题标题】:Azure Storage Account Static Website takes lot of time to loadAzure 存储帐户静态网站需要大量时间来加载
【发布时间】:2020-07-21 13:27:37
【问题描述】:

我已在 Azure 存储帐户静态网站中部署了我在 Angular 中内置的单页应用程序。但是最初加载网站需要很多时间。经过调查,我发现加载一个 js 文件大约需要 1.2 分钟 - main.af203c3f3d3f3672aa00.js 大小仅为 4.8MB。 同样在响应标头中,我只能看到以下标头-

Accept-Ranges: bytes
Content-Length: 4787902
Content-MD5: n+dgJsZM2T10m0hxWEpjJw==
Content-Type: text/javascript
Date: Tue, 21 Jul 2020 13:06:45 GMT
ETag: "0x8D82CBF6D4B3910"
Last-Modified: Mon, 20 Jul 2020 15:13:15 GMT
Server: Windows-Azure-Web/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 6ea1da4a-e01e-0045-0b5f-5f06fe000000
x-ms-version: 2018-03-28

Content-Encoding: gzip 未设置。这就是为什么要花这么多时间来下载 4.8MB 的内容。

我已在 azure 门户中查看,没有找到任何启​​用 Content-Encoding 的选项。 如何在 Azure 存储帐户中启用静态网站压缩?

【问题讨论】:

  • 上传的文件压缩了吗?还是您上传了未压缩的文件?
  • 是实际下载需要 1.2 分钟还是文件中代码的处理。
  • @GauravMantri-AIS 我已按原样上传文件。表示未压缩。
  • @DanielBjörk 是的,Content Download 需要时间。

标签: azure content-encoding azure-storage-account


【解决方案1】:

使用 Azure 存储资源管理器,您可以在每个 blob 上设置内容类型、缓存控制、内容编码。将您的 .js 文件转换为 .gzip,然后在文件上设置正确的元数据。

这里有一个可以将javascript转换为gzip的在线工具:http://cnvyr.io/online

【讨论】:

  • 成功了。我已经压缩了保持相同名称的文件并上传了。然后使用 azure storage explorer 更改ContentEncoding: gzip。以前需要 1.2 分钟下载的文件现在可以在不到 20 秒的时间内下载完毕。
  • 您需要更改每个文件的“ContentEncoding”还是 $web 容器?是否可以从 Azure 门户网站或仅从 Azure 存储资源管理器应用程序进行此更改?
  • 哦!!! “保持同名”是否意味着我需要删除“.gz”扩展名???
【解决方案2】:

考虑到您正在按原样上传文件,将 blob 的内容编码属性设置为 gzip 无济于事。

为此,您需要先使用 gzip 压缩来压缩文件,然后将压缩文件上传到 blob 存储中。您还需要将 blob 的内容编码属性设置为“gzip”。

如果您正在寻找第三方工具来执行此操作,请查看 Cerebrata Cerulean (https://www.cerebrata.com)。它有一个功能,您可以指示它在上传之前使用 gzip 或 deflate 压缩文件。它还会自动将 blob 的内容编码属性设置为“gzip”或“deflate”。

完全披露:我正在开发这个应用程序。

【讨论】:

  • 第三方工具每年花费数百美元,但他可以免费解决。他没有要求第三方工具,所以这只是你试图营销自己的产品。
猜你喜欢
  • 1970-01-01
  • 2022-12-14
  • 2022-01-02
  • 2018-06-24
  • 2014-06-17
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多