【问题标题】:Angular2 GZIP issue when I run my app运行我的应用程序时出现 Angular2 GZIP 问题
【发布时间】: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 版本。 stackoverflow.com/questions/39803472/…

标签: javascript angular gzip systemjs cloudflare


【解决方案1】:

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

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

【讨论】:

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