【问题标题】:Serve gzipped content via a Web Resource通过 Web 资源提供 gzip 压缩的内容
【发布时间】:2018-08-30 15:01:37
【问题描述】:

我有一个 Dynamics 365 实例,它使用基于 Nodejs 的现代构建管道大量使用自定义前端接口,其中涉及常见的嫌疑人,例如 webpack/babel/等。我将这些文件作为网络资源托管在 Dynamics 中(每个 SPA 一个 html 文件和一个 bundle.js 文件)。

随着我的团队接近生产,我正在尝试为我们的前端内容建立一个良好的生产构建,以减少加载时间。不幸的是,我找不到提供编码为 gzip 的 bundle.js 文件的好方法,因为 Dynamics 在发出请求时不会返回 Content-Encoded: gzip 标头,因此浏览器不会解压缩文件并尝试读取压缩文件作为纯 JavaScript。

当然,我们可以很好地提供未压缩的文件,但如果可能,我们希望提供更小、更快的加载文件,因为它的大小通常约为 1/3。

当我请求网络资源时,是否有人对如何覆盖从动态返回的默认响应标头有任何绝妙的想法?或者有什么其他聪明的办法解决这个问题?

谢谢,如果需要任何说明,请告诉我。

【问题讨论】:

    标签: http-headers dynamics-crm gzip


    【解决方案1】:

    我不知道通过网络资源提供压缩内容的任何方式。

    如果下载大小是一个很大的问题,也许可以将 gzip 压缩的代码编码为 base64 并将其作为字符串变量存储在 JS 中。 然后在执行期间您可以解码、解压缩和eval() 代码。

    您还可以通过注释记录或在 XML Web 资源中将 base64 gzip 压缩代码存储为文件附件,尽管这些选项需要额外的 API 调用才能获取代码,因此字符串变量可能是您的最佳选择。

    【讨论】:

    • JS 字符串选项可能是最好的选择。对于我的用例,我认为最好完全省略 gzip,只提供稍大(~200 kb)的文件。我会接受这个答案,因为它确实解决了问题。谢谢!
    猜你喜欢
    • 2010-10-31
    • 2012-07-24
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    相关资源
    最近更新 更多