且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Ext JS 的 CDN 服务

更新时间:2022-05-18 13:18:23

项目上线后,一般 JS 文件都是采用混淆的版本,而不会使用开发版本或者调试版本。如果需要为 ExtJS 库考虑一个 CDN 服务供应,本人第一时间可能会想到的便是链接 Ext 官方的 js 文件。此方法虽可行,但是链接到国外服务器一来较慢,二则如果人家也不作跨域调用,最终还是不能够实现 CDN 性质的服务的。

于是,内容供应网络(Content Distributed Network,简称CDN)的想法就被提出来了。CDN 是一种便民的概念,一般指把可以共享的资源集中存放在某一主机上面,从而免除每次在自己的主机***问公用的资源,对自身而言也节约了带宽,减轻了应用服务器的负担(如果 CSS /图片都算在内就相当可观)。CacheFly 就是一个为 Ext 用户提供此类服务的供应商。CacheFly 支持从官方的“Build your own! ”工具所生成的包,直接 *.js 文件的引入方式当然也支持。如果是 Build your own 的话,在“生成向导”的提示中选择“CacheFly”就可以了;如果是“直接引入”,在页面插入以下 http 地址的 script (注意当前最新的版本号)。

Ext JS 的 CDN 服务

  • http://extjs.cachefly.net/ext-3.0.3/adapter/ext/ext-base.js
  • http://extjs.cachefly.net/ext-3.0.3/ext-all.js
  • http://extjs.cachefly.net/ext-3.0.3/resources/css/ext-all.css

既然谈到 CDN 顺便谈谈 Google。像 Dojo、jQuery……Google 都为公众提供主流框架的 CDN 服务,但唯独 ExtJS 的为什么看不见呢?须知 ExtJS 的用户不在少数,但 Google CDN 就没有加入——这反映了什么问题呢,这正是最为人诟病的版权问题!ExtJS 为双许向的开源框架,其中就包括了商业许向,这一点正正是 Goolge 所不能容忍的!Goolge 要求其的推架,绝对清一色免费的。因此只有 MIT 许可的 Ext Core 才纳入 Google CDN 共享。要使用该服务,比较简单,用 <script> 直接引用的地址如下:

  • http://ajax.googleapis.com/ajax/libs/ext-core/3.0/ext-core.js
  • http://ajax.googleapis.com/ajax/libs/ext-core/3.0/ext-core-debug.js

另外一种可行的方法是,引入 Google AJAX API Loader 脚本,然后执行 “google.load('ext-core', '3');” 便可。如果项目只需要 Ext Core,Google 是可以为 Ext Core 用户提供 CDN 服务的。尽管没有提供完整的 Ext-all.js 支持,但回顾当初,这也是 extjs.com 与 Google 积极磋商后的妥协结果。在 Google 官方帖子上,显示了不少粉丝都曾经声援 Ext——要求 Google CDN 加入 Ext-all。

这里有一个技巧,如果想开发期间与部署后的 url 一致,我们可以修改 etc/hosts 文件,加入这句:

127.0.0.1 extjs.cachefly.net

edit:2009-12-14

edit:2011-5-6:

  • http://extjs.cachefly.net/ext-3.3.1/adapter/ext/ext-base.js
  • http://extjs.cachefly.net/ext-3.3.1/ext-all.js
  • http://extjs.cachefly.net/ext-3.3.1/resources/css/ext-all.css

另外,估计是上传整个 ExtJS 包的缘故,包括“例子 examples”等的 CDN 也是有的:http://extjs.cachefly.net/ext-3.1.0/examples/index.html

http://extjs.cachefly.net/ext-4.0.0/ext-all.js