运行我的应用程序时出现 Angular2 GZIP 问题

Posted

技术标签:

【中文标题】运行我的应用程序时出现 Angular2 GZIP 问题【英文标题】:Angular2 GZIP issue when I run my app 【发布时间】:2017-04-24 04:14:15 【问题描述】:

我有一个 angular2 typescript 应用程序。

我使用 Firebase 托管并使用 cloudflare 来提高速度、缓存和保护。

浏览器标题显示:accept-encoding:gzip, deflate, sdch, br

这将被转换为 app.js 文件,现在被缩小到 1.6mb。

然后我用 GZIP 压缩了这个 app.js 文件。

我想使用现在是 GZIP 压缩的 app.js 文件,而不是原来的 1.6mb app.js 文件。因此,我在我的 index.html 页面中指向 app.js.gz 文件,我得到一个名为:

的浏览器错误

app.js.gz:1 Uncaught SyntaxError: Invalid or unexpected token

下面是我的 app.js 文件和 index.html 的屏幕截图。

如果您需要更多信息或截屏,请告诉我。

看来我需要做点别的事情才能让它工作。 我需要做一些 cloudflare 设置来接受 .gz 文件吗?

【问题讨论】:

您不必包含 app.js.gzip 文件,只需正常包含它, app.js ,serve 将即时请求 gzip 压缩版本。 是的,但是当我这样做时应用程序太慢了,例如四秒 我不是那个意思。我说的是如果您的服务器配置正确,它将自动选择 gzipped 版本,您不需要包含 gzipped 版本。 ***.com/questions/39803472/… 【参考方案1】:

那些 gzip 对可以使用预压缩文件的网络服务器来说是肉,他们不必在每次请求时都对其进行 gzip 压缩或缓存它。 然后它传输的 js 被压缩,其余的由浏览器/cloudflare 处理。所以你不必编辑脚本标签来使用 gzip 或不要使用它。

但是对于来自 cloudflare 的少数请求,您可以简单地使用 nginx 并在其中启用 gzip(并且不要使用 .gz)。

【讨论】:

我看了看延迟加载,看起来很简单。跑起来会不会很麻烦?它会减少我的应用程序 4 秒的加载时间 视情况而定,你会有更小的“子模块”,但你不能直接在它们之间导入而不破坏好处,但如果你不需要路由的所有代码,它会使应用程序的启动更快更小,但是稍后会加载另一个路由所需的代码,页面不会立即出现。 那么理想情况下我懒加载我的管理页面和网站深处的页面? 我认为单独加载管理页面只有好处,因为普通用户永远不会访问它们。然后,例如,您可以捆绑用户登录的所有页面,因为它们通常已经共享一些其他代码和CanActivate。我只是看看其他页面带来了什么好处,或者如果每个页面都是“专业的”,可能会尝试将它用于每个页面 谢谢朱利安,我今晚会试试,让你知道我的进展情况

以上是关于运行我的应用程序时出现 Angular2 GZIP 问题的主要内容,如果未能解决你的问题,请参考以下文章

npm 启动我的 Angular2 项目时出现重复的标识符导出错误

Angular 2:当我通过浏览器刷新时出现 404 错误[重复]

Angular 2:当我通过浏览器刷新时出现 404 错误[重复]

在打字稿角度应用程序中解析模块时出现404

Angular2:尝试使用 @ViewChild 注释将焦点设置到输入字段时出现未定义的错误

Angular 2 应用程序部署到 Azure 时出现错误 404