我开始使用Dojo工具包,它具有丰富的功能,如Dijits和主题,这些功能很有用但需要永远加载。
我有一个很好的互联网连接,但连接速度较慢的人会遇到相当慢的网页加载。
这也是关于重型和轻型框架的问题。如果大量使用小部件,有哪些技术可以缩短页面加载时间?
答案 0 :(得分:6)
Dojo有一个构建系统,可以大大缩短加载时间。看看其中一本道场书或在线文档&看看分层构建。为了进行构建,你需要拥有包含构建工具的dojo的“源”(或“完整”)版本 - 你可以通过'util'目录的存在来判断你是否拥有它(与dojo,dijit,dojox处于同一水平。如果您没有完整版本,请返回dojo网站&深入研究下载区域 - 也许并不完全明显。
无论如何,如果你有正确的版本,你基本上只需要制作一个“构建配置文件”文件(或文件...也就是一个分层构建),这实际上是你通常会有的dojo.requires列表在你的HTML中。构建系统会将所有dijits,dojox等所有javascript代码一起插入“分层构建”(文件)中,并在其上运行shrinksafe,这样可以缩小代码(删除空格,缩短名称)等)。它也会对css文件执行一些操作。除了使事情变得更小之外,您只需为所有js代码获取一个文件(如果您执行多个图层,则只获得一些文件,但大多数情况下单个图层就足够了。)
如果不是更多,这将使您的加载时间至少增加十倍。可能需要一些阅读才能了解配置文件的格式和构建命令本身,但实际上并不太难。一旦你创建了一个构建文件,把它命名为“mystuff”之类的东西然后你可以dojo.require“mystuff”文件(它将在你构建时创建的新构建目录中,然后在那个& hang out下面使用dojo目录中的dojo.js文件)。在您构建的文件中要求将满足您通常所做的所有dojo.require(假设您已将它们全部列在要构建的配置文件中)并且事情将加载非常快。
这是旧版构建文档的链接,大多数情况下仍然适用: http://www.dojotoolkit.org/book/dojo-book-0-9/part-4-meta-dojo/package-system-and-custom-builds
这是更新的文档(虽然可能有点不完整): docs.dojocampus.org/build/index
它读起来比实际更难...使用profiles目录中的layer.profile文件作为起点。只是把几件东西放在一起然后做一个构建&看看你是否创建了发布目录(它应该与dojo,dijit等处于同一级别)并且它将包含整个dojo系统(全部缩小)以及你构建的(分层)东西。快得多。
Dylan Tynan
答案 1 :(得分:3)
它不是那么大(28k gzipped)。不过你可以使用Dojo的Google's hosted version。您的许多用户已经将其缓存。
答案 2 :(得分:1)
创建构建文件后,将其命名为“mystuff” 然后你可以dojo.require“mystuff”文件(将在 在构建时创建的新构建目录,然后在下面 那&和dojo目录中的dojo.js文件一起出去玩)。 在你的构建文件中需要满足所有dojo.require的你 通常做(假设你将它们全部列在配置文件中) 构建)并且事情将加载非常快
稍微纠正 - 你没有dojo。需要那个文件,你在一个普通的脚本标签中引用它。
<script type="text/javascript" src="js/dojo/dojo/dojo.js" ></script>
<script type="text/javascript" src="js/dojo/mystuff/mystuff.js"></script>
对于目录布局,我将构建的文件“mystuff.js”放入与我的包相同的目录中。所以在与dojo,dojox和dijit相同的级别,我会有一个名为“mystuff”的目录,并且在其中我有MyClass1.js和MyClass2.js。然后,构建的profile.js文件中的片段如下所示:
layers:[
{
name: "../mystuff/mystuff.js",
dependencies: [
"mystuff.MyClass1",
"mystuff.MyClass2"
]
},...
答案 3 :(得分:0)
我知道这是一个老线程。但我发布这个答案是为了让像我这样可能会读到这个内容的其他用户受益。
如果你从apache服务还有其他因素。这些设置可以产生巨大的差异 - MaxClients
和MaxRequestsPerChild
。您需要根据服务器/机器可用资源调整它们。
改变这个对我来说非常有用。
使用谷歌CDN也是一个不错的选择,虽然在某些情况下可能不实用。
自定义构建也具有其他答案中指出的效果。