CDN(翻译)

http://dojotoolkit.org/documentation/tutorials/1.10/cdn/index.html

从CDN上加载dojo模块时非常有用的。从CDN上加载Dojo并同时加载本地的模块看起来似乎不可能的,但在本教程中,我们将学习怎么达到本目的。

介绍

曾几何时,从CDN上加载dojo模块是很有用的。例如创建你一个简单的测试方案并且可以随时运行,或者提供易于分发和运行的代码。但直接从CDN上加载dojo,基于路径配置的本地自定义模型就不容易加载使用了。为了能够让CDN和本地自定义模型一起运行,需要在dojo上设置一些配置信息。

通过研究对比发现,使用CDN比使用本地托管的dojo库的性能表现差。特别是运用本地托管时,能够明显的减少HTTP请求次数。如果你是为了使用CDN来提高性能,那么你就要仔细衡量了。

加载我们的模块

使用cdn加载dojo模块,创建一个简单的页面,代码如下:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <title>Demo</title>
 5     </head>
 6     <body>
 7         <script data-dojo-config="async: 1"
 8             src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
 9     </body>
10 </html>

该代码设置了AMD(异步模块定义)机制打开,并可以加载dojo模块了。

在1.7版本之前,如果要跨域的话,需要加载dojo.xd.js。由于AMD的原生态支持跨域加载,所以这个就不在需要了。注意在脚本URL地址中有没有http:;this means that the same protocol will be used to load from the CDN as is used for the current page (i.e. if the current page loads over HTTPS, so will the code from the CDN).

下面我们要确认dojo是否可以访问本地的dojo/resources/blank.html文件,我们使用加载模块的方法测试是否能够访问该模块。代码如下。

1 <script data-dojo-config="async: 1, dojoBlankHtmlUrl: ‘/path/to/blank.html‘"
2     src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>

下面我们需要定义本地包的路径。

1 <script data-dojo-config="async: 1, dojoBlankHtmlUrl: ‘/blank.html‘,
2         packages: [ {
3             name: ‘custom‘,
4             location: location.pathname.replace(/\/[^/]+$/, ‘‘) + ‘/js/custom‘
5         } ]"
6     src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>

Note that the local package location is using a little JavaScript trickery to create an absolute path that is derived from the path of the current HTML file.

注意,我们用了一小段javascript的欺骗性的代码,创建了一个可以连接到html文件的相对路径。在dojo1.10中,使用相对路径加载模块时一个非常正确的选择。这在dojoBlankHtmlUrl上也适用。如何可以,我们就可以定于本地的包,并加载模块。我们就可以像加载普通模块一样加载我们自己定义的模块了。

1 require([ ‘custom/thinger‘ ], function(thinger){ … });

注意事项

Unlike the old Dojo loader, nothing different needs to be done when using built modules from CDN. However, there is an issue that you may run into when using Dojo loaded from CDN:

  • Attempting to load unbuilt, remote AMD modules that use the dojo/text plugin will fail due to cross-origin security restrictions. (Built versions of AMD modules are unaffected because the calls to dojo/text are eliminated by the build system.)

不同于以前的dojo加载器,在使用CDN上的dojo库时和使用本地的库没有什么区别。然后一般在cdn上调用dojo的时候,也会碰到一些常见的问题。

结论

CDN-based versions of Dojo can be useful in some circumstances. By making a few simple configuration changes, it is possible to use custom local modules while loading Dojo from a CDN, thanks to the new AMD-based module system.

链接

时间: 2024-10-28 20:19:58

CDN(翻译)的相关文章

【技术干货】听阿里云CDN安防技术专家金九讲SystemTap使用技巧

1.简介 SystemTap是一个Linux非常有用的调试(跟踪/探测)工具,常用于Linux 内核或者应用程序的信息采集,比如:获取一个函数里面运行时的变 量.调用堆栈,甚至可以直接修改变量的值,对诊断性能或功能问题非 常有帮助.SystemTap提供非常简单的命令行接口和很简洁的脚本语 言,以及非常丰富的tapset和例子. 2.何时使用 定位(内核)函数位置 查看函数被调用时的调用堆栈.局部变量.参数 查看函数指针变量实际指的是哪个函数 查看代码的执行轨迹(哪些行被执行了) 查看内核或者进

CDN——到底用还是不用?

最近在学bootstrap,在知乎上搜索bootstrap看到有人问bootstrap基础包体积较大,对性能影响会不会很大,看到两种方法来减少对性能的影响: 有选择地部分加载,bootstrap带有LESS和Sass版本,可以根据业务需求只加载需要用到的部分:bootstrap为不同的交互功能也提供了对应的js文件,不必直接加载bootstrap.min.js 使用CDN加载 我还没有学过LESS和Sass,所以第一种方法我还不会,不过CDN这个概念我以前看"JavaScript DOM 编程艺

Symfony2框架实战教程——第六天:模板重载与翻译

在未登录状态下点击“+发表新闻”按钮,也就是/news/new链接,会转跳到/oauth/login/链接,也就是第三方登录的链接(如果只实现了本地用户登录的同学,去的应该是另外一个界面,不过没关系,重载模板的原理都一样).目前第三方登录页面只有一个可怜巴巴的“QQ”这个链接,让我们也给它加上页头页尾. 不过,这个模板文件很明显不是我们自己添加的,是第三方Bundle里自带的,难道我们要去修改第三方Bundle的代码吗?库文件随便修改这样好吗?当然不好,好消息是Symfony2框架实际是提供了框

利用javascript和WebGL绘制地球 【翻译】

利用javascript和WebGL绘制地球 [翻译] 原翻译:利用javascript和WebGL绘制地球 [翻译] 在我们所有已知的HTML5API中,WebGL可能是最有意思的一个,利用这个API我们能够在浏览器中创造出炫酷3D场景的能力.本文将完整的向你展示一些炫酷是如何实现的. 需要特别指出的是,这篇教程我们将会构建一个地球行星模型,这个模型可以像一个兴奋的人一样环绕的旋转,另外,它可能使我们可以获得一些其他程序员的称赞,好吧,就这么多了. 准备 这篇教程我们将会用到一个令人着迷的We

云时代来临,快速利用CDN服务为海外用户访问国内网站加速

云时代,如何利用CDN服务为海外用户访问国内网站加速 本文Blog地址:http://www.cnblogs.com/taosha/p/6760079.html,您可以自由转载,请保留出处,谢谢配合! 众所周知,海外用户访问国内网站速度都不尽人意,主要原因是地理距离比较远,中国到海外的Internet出口带宽有限且中间还隔着"长城防火墙".那我们有什么办法可以来加速海外用户对国内网站的访问速度么?答案就是CDN服务.本文主要就是介绍CDN服务提高海外客户访问国内网站的加速原理,海外CD

网页3D引擎“Babylon.JS”入门教程翻译总结

使用三个月的业余时间把官方教程的入门部分译为中文并上传到github,在下一步编程前做一个总结. 历程: 最早接触游戏编程是在大三下学期,用汇编语言和实验室里的单片机.触摸屏.电机(提供声效)编的打地鼠程序.后来因为大四的毕业设计与三维空间模拟有关,又自学了MFC编程和NEHE的OpenGL教程(国人翻译版)(C++3D编程的复杂会给任何参与者留下深刻的印象,向先驱者们致敬).工作后自学了JavaScript语言和前端知识,感觉js与C++相比极其简单易用,如果能以js代替C++进行3D开发可以

Dojo教程翻译索引

Getting Started Dojo Start 原文 翻译 Hello Dojo!原文 翻译 Modern Dojo 原文 翻译 Configuring Dojo with dojoConfig 原文 翻译 Fundamentals Classy JavaScript with dojo/_base/declare 原文 翻译 Creating Templte-based Widgets 原文 翻译 Using dojo/query 原文 翻译 NodeList Extensions 原文

揭秘Google CDN的神秘面纱

几个月前,Google 为即将到来的CDN服务推出了他们的 α 计划.我们一直密切关注他们的发展,同时,在2016年谷歌宣布CDN已经进入了测试阶段.我们已经讨论了 Google 的这个已经实现内容分发解决方案的新产品怎样适应各种不同的情况.我们已经看到谷歌在全球安装了800多个缓存的全局缓存,这主要是针对在ISP层面加快自己的服务.CDN使它们的程序与第三方供应商像Cloudflare,Level3,Akamai,Highwinds, Fastly,Verizon互相连接,必须允许他们使用谷歌

CDN具体解释(篇二)

还有还有一个问题就是全部的内容都放在同一个地方.假设我们的server在芝加哥,那么美国中西部的人们訪问server的响应时间和用户体验就比香港.德国.南非以及佛罗里达州的用户好.由于那些用户离server的物理距离更远,依据物理定律来看.这些用户获取内容显然须要更长时间.这加大了请求的数量,并且当中大部分请求为静态内容或者是占用大量带宽的文件的请求. 单个字节的数据以server为原点传输到终端用户所花的时间被称为"往返时间"(round trip time)或者称作延迟(以毫秒为单