在 CRM 在线开发环境中下载 Web 资源是否比生产环境慢?

Is Downloading A Web Resource in CRM Online Dev Environment Slower Than a Prod Environment?

我在 CRM 中托管了一个 Web 资源 html 页面。它使用 Kendo UI,我也将其作为 Web 资源托管在 CRM 中。这是 Chrome 加载页面时的网络结果:

下载 620KB 的 js 文件总是需要 4 秒以上的时间。这对我来说似乎很慢。生产环境会更快吗?有什么办法可以加快速度吗?

这里有几个问题需要回答,这些问题与测试环境与生产环境的加载有关,这会影响它在生产环境中是否会更快。性能是资源使用方式的函数,特别是 CPU、磁盘、内存和网络。了解这些资源如何在您现有的环境中使用以及它在产品中是否有所不同可以帮助您回答您的问题。还有生产差异的问题。

示例。
a) Dev/QA 在虚拟机上,虚拟机主机与其他 50 个虚拟机共享。所有对资源的访问都由虚拟机管理程序仲裁(所有共享,非独占)并且所有资源都必须竞争资源。 CPU 运行s 一直处于 95%++,并且机器始终在交换 - 1Gigabit 网络。在生产环境中,机器也会 运行 在 VM 上运行,但每个主机至少有 4 个 VM。它将拥有自己的专用磁盘、网络(10-Gbit)、内存和 CPU 池,不与其他主机共享。这会影响从磁盘到内存缓存的交付链,以便为经常请求的项目提供在线服务。在没有仲裁的情况下对资源的更多独占访问改善了文件(和所有文件)的整个交付链

b) 生产 CDN 对比 Dev/QA 中没有 CDN。该文件将从您的本地 CDN 节点提供,或者最好在客户端缓存之外为 return 访问者提供适当的缓存管理。这击败了到服务器的长网络请求链,从磁盘中提取(如果不在请求缓存中)和服务

c) 生产环境中的 Web 服务器与 dev/qa 不同。您正在使用 Apache 进行测试,但在产品中您将使用 nginex。一个是跑车,另一个是赛车手。赛车手在交付文件时获胜。

d) 压缩和优化。在 prod 中,所有文件都被缩小和压缩。这减少了网络 window 来传递文件以及从磁盘中提取的中断服务。最终结果是此文件和所有经过缩小和压缩的文件的交付速度更快。

e) 产品中的不同主机。在生产中,您计划将静态文件放在 Amazon 中,而不是将它们全部托管在一台服务器上,虚拟站点位于 dev/qa。这在产品中提供了更独特的交付路径。另外,还有 Amazon CDN。

620KB 也很重要。这些天经常发生的事情是,通过迭代开发周期推出的代码中积累了大量的开发碎片。确保您的文件只包含需要的内容,不包含更多内容。如果这一页不需要某些 JavaScript,但下游页面需要,请考虑在单个页面上将文件拆分为更小的块。这似乎违反直觉,但对于那些从未访问过 "Page 42," 的用户来说,那里有 10 个 JavaScript 功能,他们不得不等待再等再等(如果 public 网站可能会放弃) 而他们永远不需要的代码被拉出。

较小的文件,仅包含该页面所需的内容,至少在会话期间进行缩小、压缩和缓存 * 2 + CDN 将决定您的交付日期。

尽管 James 对脚本下载时间和环境差异有一个很好的通用答案,但它没有回答手头的问题,在下载脚本时,prod 环境会比 dev 更快吗?

我最终将示例移至生产环境,不幸的是,Dev 和 Prod 之间没有统计差异。有时 Prod env 实际上比 Dev 慢。

有趣的是,js 文件已缩小,显示为 610KB,而实际大小为 1.99MB。 MS CRM 必须进行一些额外的压缩以进一步减小下载大小,否则 Chrome 谎言...