【问题标题】:How to load Kendo UI widgets faster如何更快地加载 Kendo UI 小部件
【发布时间】:2015-11-20 16:38:43
【问题描述】:

我正在使用 Kendo UI 小部件,例如折线图、网格和日期选择器。我喜欢该产品,但是我注意到页面加载时存在延迟问题。

以网格为例;我首先看到一个标准的 HTML 表格加载,然后一秒钟后它被剑道网格重绘。

我的日期时间选择器、单选按钮等也是如此。这是我在我正在处理的仪表板的布局页面中按顺序使用的所有 css 和脚本的示例......我是不是捆绑的忠实拥护者,因此我将脚本保留在页面中。我知道如果你捆绑(如果它有效......)你会在线程(?)中获得轻微的性能,但我似乎总是对捆绑器有问题,所以我将它们留在页面中。是否有加载这些脚本的顺序,这样您就不会以用户身份看到元素的重绘?

页面顶部

<link href="~/Content/css/bootstrap.css" rel="stylesheet" />
<link href="~/Content/css/style.css" rel="stylesheet" />

<link href="~/Content/css/animate.css" rel="stylesheet" />
<link href="~/Content/css/animations.css" rel="stylesheet" />
<link href="~/Content/css/kendo/kendo.common.min.css" rel="stylesheet" />

<link href="~/Content/css/kendo/kendo.custom.css" rel="stylesheet" />
<link href="~/Content/fonts/font-awesome/css/font-awesome.min.css" rel="stylesheet" />
<link href="~/Content/fonts/fontello/css/fontello.css" rel="stylesheet" />

<link href="~/plugins/magnific-popup/magnific-popup.css" rel="stylesheet"/>
<link href="~/plugins/owl-carousel/owl.carousel.css" rel="stylesheet"/>
<link href="~/plugins/iCheck-1.x/skins/square/square.css" rel="stylesheet" />


@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")

页面底部

@Scripts.Render("~/bundles/bootstrap")

<!-- Isotope javascript -->
<script type="text/javascript" src="~/plugins/isotope/isotope.pkgd.min.js"></script>

<!-- Owl carousel javascript -->
<script type="text/javascript" src="~/plugins/owl-carousel/owl.carousel.js"></script>

<!-- Magnific Popup javascript -->
<script type="text/javascript" src="~/plugins/magnific-popup/jquery.magnific-popup.min.js"></script>

<!-- Appear javascript -->
<script type="text/javascript" src="~/plugins/jquery.appear.js"></script>

<!-- Sharrre javascript -->
<script type="text/javascript" src="~/plugins/jquery.sharrre.js"></script>

<!-- Count To javascript -->
<script type="text/javascript" src="~/plugins/jquery.countTo.js"></script>

<!-- Parallax javascript -->
<script src="~/plugins/jquery.parallax-1.1.3.js"></script>

<!-- Knob -->
<script src="~/plugins/jquery.knob.min.js"></script>

<!-- Contact form -->
<script src="~/plugins/jquery.validate.js"></script>

<!-- SmoothScroll javascript -->
<script type="text/javascript" src="~/plugins/jquery.browser.js"></script>
<script type="text/javascript" src="~/plugins/SmoothScroll.js"></script>

<!-- Initialization of Plugins -->
<script type="text/javascript" src="~/Scripts/template.js"></script>

<script src="~/plugins/iCheck-1.x/icheck.min.js"></script>
<script src="~/Scripts/kendo/jszip.min.js"></script>

<script src="~/Scripts/kendo/kendo.all.min.js"></script>
<script src="~/Scripts/kendo/kendo.aspnetmvc.min.js"></script>

【问题讨论】:

  • 研究使用 gulp 捆绑和最小化您的 javascript 文件,这将大大提高性能。您还可以将 kendo javascript 文件放在文档的头部,这将导致它在呈现页面之前尝试下载文件。发生的情况是您的页面在下载和执行 javascript 之前呈现,您可以通过确保首先加载 js 文件来解决这个问题。然后你可以把你的剑道设置代码放在正文中。
  • @Jdsfighter - 谢谢!这是一个 asp.net mvc5 应用程序,使用 bundler 是否类似于使用 gulp?
  • 如果我记得的话,捆绑器的效率并不高,而且随着 .Net 和 VS 的较新版本,他们实际上已经远离了捆绑器,而是使用 gulp 来代替它。使用 VS2015,您可以获得原生 gulp、grunt 和 bower 支持。这意味着您可以创建自动下载、编译、捆绑和最小化您对项目构建的依赖的构建。它甚至会将它们复制到相应的文件夹中。

标签: javascript jquery kendo-ui


【解决方案1】:

脚本优化是一回事。像使用 @Styles.Render() 处理 Javascript 一样使用 css 缩小和捆绑。它在生产环境中是强制性的(如果您不使用外部缩小)。

另一件事是剑道总是这样工作的。首先创建元素,然后将其转换为小部件。

如果您在document.ready 事件中创建小部件,则必须先加载网站的所有内容(包括 html 和元素),然后才能创建小部件。减小页面内容的大小将缩短其加载时间,但如果用户的网络连接速度较慢,您仍然会有此效果。

所以你应该做的第一件事就是隐藏你将转换为小部件的元素,方法是将其显示设置为无。剑道应该像往常一样显示小部件。在 asp 版本中可能会有点困难,但您可以尝试隐藏元素容器并在一些小部件事件后显示它。

第二件事是您可以包含您在项目中使用的小部件的代码,而不是整个 kendo.all.min.js。您可以在此处找到更多信息:http://docs.telerik.com/kendo-ui/intro/installation/what-you-need(以及此处:http://docs.telerik.com/kendo-ui/using-kendo-with-requirejs)。

最后一件事:您还可以考虑使用 CDN (http://docs.telerik.com/kendo-ui/intro/installation/cdn-service),特别是如果您通过 Internet 或您自己的“内部网 CDN”创建站点,如果您在少数项目中使用相同的 javascript。

【讨论】:

  • 感谢您的回复!我最终接受了 JDS 的建议,并将脚本和 css 放在了头上。它的响应稍微慢了 400 毫秒,但重绘 UX 现在已经消失了!其次,我最终为脚本和 css 使用了 bundle.config 文件,这有助于缩短响应时间。它的 LOB 应用程序因此不需要是一流的,因此这两个更改起到了作用。我认为,如果它是一种产品,我会根据您的建议走得更远一些,但是在投入的时间与接受成为 LOB 之间存在权衡。不过感谢您的信息!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多