【发布时间】:2018-06-08 03:55:46
【问题描述】:
为了提高性能和减少负载而对 Angular 进行的所有最新和即将进行的更新都让我相信,终于是时候从传统的 aspnet mvc 应用程序更新我们的网站了。
我将网站拆分为模块,包括用于我们的主要目标网页的单独模块 - 这些模块可通过 google 或 facebook 广告访问。我显然想确保这些加载尽可能快。
在我的 JavaScript 启动之前,我过去使用 HTTP 服务器推送来推送页面所需的资源,并且我喜欢在这里做同样的事情。
例如。如果 aspnet 服务器收到对 /producttour 的请求,那么我想推送带有 http 标头的“产品之旅”模块 javascript,以便服务器可以立即开始发送它。这将删除该文件的一次服务器往返行程(这可能是一个相当大的文件)。我可能还想推送我知道到处都需要的文件,例如 vendor.js
是的,我知道这仅适用于第一页 - 之后您将进入 Angular 水疗中心,并且模块将正常加载。
我似乎找不到其他人谈论这让我感到惊讶。
- 使用 URL 哈希,每次构建时文件名都会更改,所以我不知道如何提前检索它以发送硬编码的文件名。
- 如果没有 URL 哈希,我可能会意外加载陈旧的代码。
我最好的想法是 Ng 构建到 index.htm 并禁用散列,复制该页面,然后在服务器端手动添加 ?version 并添加标题。
【问题讨论】:
-
长镜头..您是否正在研究服务器端渲染以获得更快的页面服务? angular universal
-
可能不会。但我想我应该测试两者。担心这会产生其他问题(但不确定是什么)
-
Angular 6 路由支持延迟加载。这意味着除非你去
/producttour,否则它永远不会被加载。这对大多数情况来说还不够吗? -
@Ozgur 应该是大部分,但我想避免任何闪烁。我想将不得不测试它。我还有很长的路要走,才能证明花太多时间来实现它是合理的,但我想知道以前是否有人做过。我确实看到当前站点中的服务器推送确实提高了一些速度。
-
让我直说吧;因此,当用户点击您的这个广告时,index.html,然后是主包 + 您拥有的任何供应商,然后这个代表着陆页的单独延迟加载模块正在/应该被下载,您的目标是开始加载所有一旦 index.html 即将发送给客户端,那些 JS 资产,我在这里暖和了吗?
标签: angular asp.net-core