如果我使用延迟加载并为"CanLoad"定义了一个保护.是否需要"CanActivate"?因为可以有效地加载模块但是然后用户做了使"CanLoad"无效的事情,但是因为它被加载,所以用户可以通过CanLoad.
如果已经实现了CanLoad,则延迟加载不需要CanActivate.
如果您需要检查未经授权的访问,您可能仍希望用CanActivate替换CanLoad.
这就是NG2医生所说的
CanLoad保护阻止加载特征模块资产,直到获得授权.如果您想要预加载模块并防止未经授权的访问,请使用CanActivate防护.
请参阅https://angular.io/docs/ts/latest/guide/router.html#!#preload-canload)
这是我对两个具有延迟加载功能模块的守卫进行的测试:
1. CanActivate Guard 测试
您会在网络页面的底部注意到它发出了 24 个请求,大小为 9.5 MB 传输在 3.34 秒内完成并在 3.47 秒内完全加载。
1. CanLoad Guard 测试
在这里,您将看到当我们使用 CanLoad Guard 时的巨大差异,因为浏览器仅发出 18 个请求,大小为 9.2 MB,传输完成时间为 2.64 秒,完全加载时间为 2.59 秒。
如果用户未经授权,CanLoad Guard 永远不会加载模块数据,这会为您提供更高的性能,因为加载时间减少了近 1 秒,这是加载网页的巨大时间,毫无疑问,这取决于模块大小。
提示: 如果要对项目进行测试,请确保
Disable Cache选中网络选项卡中的复选框,它已在第一张图片中标记
| 归档时间: |
|
| 查看次数: |
6562 次 |
| 最近记录: |