随笔-120  评论-888  文章-0  trackbacks-7

一个疯狂想法

  2011年新年元旦晚上一直没睡好觉,新一年的网站规划,反思过去。辗转反侧,想到了公司内部网站的打通问题,于是诞生我这个不靠谱的“伟大”想法,哈哈。

  全世界的网站,可能代码重复最高的就是类似jquery,prototype,common.css这类的代码,如果全世界的这些代码不用每次都重复请求,新访问用户同一版本文件,只要请求一次,就在本地缓存5年以上,就相当于在浏览器里面默认安装了一样,这样,就可以节省大量的带宽开销,包括http连接开销和304响应开销。

为保证代码托管的提供商不会出现连接问题,可以采用类似检查是否已经加载的方法,如果加载不成功,则请求本地的代码段。

为保证版本问题,链接应该为如下形式,http://a.a/jq.js?v1.3

为尽量节省字节,最好是最精简的链接,最短的域名。

受益的每个方面:

1 访问用户,用户只需要访问联盟内任意网站,一次性缓存了文件后再浏览别的网站,就不需要重新请求。

2 网站联盟内的流量节省开销,仅仅是联盟的入口点消耗带宽,再次浏览其他站点就可以完全避免带宽消耗。节省带宽的同时当然也降低了服务器的并发请求。

 

但是这也有无法解决的问题:

谁来承担全世界的流量?

想来想去,难道是类似世纪互联,蓝讯,网宿这样的托管商吗?让他们的客户都能够享受到类似这种增值服务?这是为他们客户节省带宽,但是也是减掉了他们赖以赚钱的流量。

由类似谷歌,facebook这类的IT巨头来牵头这类服务?就像推广OPENID一样?我总觉得我个人的力量有限,也许我应该像哥伦比亚大游行一样,在facebook上先建一个群来获得大量的支持,呵呵(看过《facebook效应》的顶我哈)

 

目前谷歌的站点上托管有jq代码,但是我不知道他是否有限制流量,没有做CDN,所以无法让他来承担全世界的带宽。

 

欢迎大家就这个事疯狂建议,疯狂拍砖哈,呵呵。

 

 

(我们能节省流量的方式还有很多需要改进的,比如全世界有X%的服务器没有使用Gzip,有X%的网站还是使用古老的ETAGlastmodified标记来做缓存。还有N多小网站的图片格式不会使用,都采用JPG,都没有进行web优化等,这些流量节省的方式比我上面的那种方式要更加节省流量。)

 

 此文的后续部分已经出来请移驾至:http://www.cnblogs.com/perfectdesign/archive/2011/01/05/1925983.html

 

posted on 2011-01-04 10:13 Keep Walking 阅读(5859) 评论(71) 编辑 收藏

评论:
#1楼 2011-01-04 10:16 | 杨国伟      
先占沙发!占完再看!
 回复 引用 查看   
#2楼 2011-01-04 10:21 | cosnis      
也许发布浏览器插件 将js内置到浏览器里面是个比较靠谱的思路
 回复 引用 查看   
#3楼 2011-01-04 10:24 | 小AI      
这个想法是不现实的,yahoo!的performance team做过实验40%--60%用户是在空缓存的状态下访问yahoo!页面的。不要想当然的利益浏览器缓存,具体可以查看。
http://www.yuiblog.com/blog/2007/01/04/performance-research-part-2/

 回复 引用 查看   
#4楼[楼主] 2011-01-04 10:25 | Keep Walking      
@cosnis
哈哈,的确!新思路!
谢谢
但是这个插件的代码更新也是个很大的流量

本来我是想能不能让各大浏览器默认安装,但是还会涉及到版本和流量的问题

 回复 引用 查看   
#5楼 2011-01-04 10:27 | 小花朵      
1.随着网络带宽的提升,节省这几K的字节没有实质性的作用
2.jQuery,Extjs之类的东东我觉得浏览器是关键,性能低下,占内存
3.jQuery,Dojo之类的大多都是公司用ERP之类的较多,但是我们公司安全级别较高,是不允许访问外网的,你考虑过怎么解决么
3.如果http://a.a/jq.js?v1.3服务器宕机,或者被挂马,你想过全世界的网站会变成什么样子吗?有句话说的好“鸡蛋不要全部放到一个篮子里”

 回复 引用 查看   
#6楼[楼主] 2011-01-04 10:29 | Keep Walking      
@小AI
空缓存没有关系啊,可以在别的地方带来jq缓存。

一个成熟网站一般还是以老用户产生的PV为主,特别是现在站绝大部分PV的微博,SNS类网站

 回复 引用 查看   
#7楼 2011-01-04 10:29 | syx278250658      
看 这么节俭的人民!对比下那些视频网站...
 回复 引用 查看   
#8楼[楼主] 2011-01-04 10:30 | Keep Walking      
@小花朵
额.....
您的说第三个的确是问题......

 回复 引用 查看   
#9楼[楼主] 2011-01-04 10:34 | Keep Walking      
我的想法的确是很不成熟,而且我发觉很多大型网站都没敢采用公用的类库,就是怕被其他中小型网站利用,偷取了带宽,在大型网站的推广jq方面也是很难。
还有就是安全问题,空缓存用户占多等问题。

 回复 引用 查看   
#10楼 2011-01-04 10:35 | guxue      
很多网站用的jquery版本都不一样,如何进行版本控制?难道在客户端每个版本都缓存吗?
 回复 引用 查看   
#11楼[楼主] 2011-01-04 10:41 | Keep Walking      
@guxue
版本含在链接内

 回复 引用 查看   
#12楼 2011-01-04 10:42 | undefined      
对于网站来说, 这点流量和由此带来的安全以及稳定性等问题对比来看,
基本上不会有人放心让第三方给自己托管的。

首先这点流量消耗小的可怜。 尤其是jQuery这种压缩再压缩的类库, 在背地再缓存一下, 基本上没多大影响的。

如果换成第三方的服务器, 那么, 如何保证他的服务器始终是快的?

比如百度用户请求文件的时候, 由于google用户也在请求, 而且google用户太多了, 自己被拖的很慢, 被迫一直等着那个js, 这岂不是很冤枉吗?

so, 还是自己搞定来的实在。至少速度有了问题, 完全可以在自己服务器上搞定。 不用一边被用户骂, 一边跑到第三方那里和人家对骂发脾气去。

 回复 引用 查看   
#13楼 2011-01-04 10:45 | 小AI      
引用Keep Walking:
@小AI
空缓存没有关系啊,可以在别的地方带来jq缓存。

一个成熟网站一般还是以老用户产生的PV为主,特别是现在站绝大部分PV的微博,SNS类网站

楼主,雅虎的这个实验表明40-60%的用户是空缓存,这与新老用户没有关系,不代表老用户的就有缓存,就是不要想当然的认为有缓存

 回复 引用 查看   
#14楼[楼主] 2011-01-04 10:46 | Keep Walking      
@undefined
哈哈,谢谢拍砖,的确是这样,仅仅是个思路,全世界网站大联合,或者浏览器默认安装。

 回复 引用 查看   
#15楼 2011-01-04 10:46 | 星云一点      
哈哈 想法是挺赞的
 回复 引用 查看   
#16楼[楼主] 2011-01-04 10:51 | Keep Walking      
@小AI
哦,好像是在高性能建站一书看过类似的数据,我回头再细看看您提供的那篇博文,貌似我看过中文的,不过里面没带图

 回复 引用 查看   
#17楼 2011-01-04 10:52 | 金色海洋(jyk)      
1、你说的好像是富客户端。好比flash的那个插件(ocx的文件)。浏览器只需要下载安装一次,以后就可以直接用了。

如果jQuery也做成这样的,

等等,这个不就变成frameWork了吗?或者是sl?

2、这样做存在一个安全问题。

访问我的网站,却在使用其他网站缓存的jQuery。如果这个缓存的jQuery被偷偷做了点手脚的话……

 回复 引用 查看   
#18楼 2011-01-04 10:53 | 偶卖糕的      
孤陋寡闻的程序员,google和微软都有cdn,缓存了各大js类库,你直接用就行了
地址如下

http://code.google.com/intl/zh-CN/apis/libraries/devguide.html#jqueryUI

 回复 引用 查看   
#19楼[楼主] 2011-01-04 10:53 | Keep Walking      
@金色海洋(jyk)
恩,的确是,要做的话,得是一个有公信力的企业,比如谷歌

 回复 引用 查看   
#20楼 2011-01-04 10:54 | assiwe      
韩国的平均带宽20M
日本的平均带宽15M
就算我天朝,平均带宽也有1.7M
一个jQuery 才26k.你能节约多少带宽?现在都已经是视频的时代了.你还拿十年前的眼光看问题


 回复 引用 查看   
#21楼 2011-01-04 10:54 | 金色海洋(jyk)      
引用Keep Walking:
@undefined
哈哈,谢谢拍砖,的确是这样,仅仅是个思路,全世界网站大联合,或者浏览器默认安装。


现在的浏览器版本就已经够乱的了,如果浏览器预装jQuery,你是要预装哪个版本的?1.3还是1.4还是以后会出现的1.5、1.6?

 回复 引用 查看   
#22楼[楼主] 2011-01-04 10:55 | Keep Walking      
我的想法太幼稚了,像flash这种规模的插件也没有被各浏览器默认,jq这类插件更加不会被默认。
貌似adobe和几大浏览器厂商都有利益冲突才导致这样的 ?

 回复 引用 查看   
#23楼[楼主] 2011-01-04 10:57 | Keep Walking      
@偶卖糕的
thanks,回头看看

 回复 引用 查看   
#24楼[楼主] 2011-01-04 11:04 | Keep Walking      
呵呵,谢谢 @偶卖糕的,


The Google Libraries API is a content distribution network and loading architecture for the most popular, open-source JavaScript libraries. Using the google.load() method gives your application high speed and global access to a growing list of the most popular, open-source JavaScript libraries. You can also use <script> tags to include the libraries.


原来谷歌早就实现了我上面说的这个想法了!

 回复 引用 查看   
#25楼 2011-01-04 11:09 | Mr.Think      
寄希望于谷歌或淘宝...
 回复 引用 查看   
#26楼 2011-01-04 11:09 | 吾跃乾坤      
这个思路很不错!
 回复 引用 查看   
#27楼 2011-01-04 11:26 | duncannjm      
想法可以,类似楼主提到的那些文件的版本都是在升级的,如果那些文件都做了重大的改进、升级,该用哪个呢?
 回复 引用 查看   
#28楼 2011-01-04 11:32 | mantou      
现在做网站,包括css reset和jquery都放到一个地方了,jquery用的是Google的。
 回复 引用 查看   
#29楼 2011-01-04 11:36 | 长木弓      
其实这样的早就有了,只是大家不接受而已,客户端缓存而已,那你有没有想过,如果相关数据改变怎么办?而且这个很占用用户端硬盘,如果都这样办,用户每天都要清空缓存,那不一样没用,切实际点吧。
 回复 引用 查看   
#30楼 2011-01-04 11:49 | 技术,趋势      
Html5, Html5支持本地存储。真正的重头戏,就是Html5。有了它,才有可能实现基于浏览器的客户端框架。
第一次运行下载,以后在浏览器一端复用。

 回复 引用 查看   
#31楼 2011-01-04 11:55 | 亚历山大同志      
google和微软以及雅虎都提供了免费公共的jQuery的CDN缓存啊。难道这么多人都不知道?
 回复 引用 查看   
#32楼 2011-01-04 12:23 | 21天后      
又学到了一招
引用偶卖糕的:
孤陋寡闻的程序员,google和微软都有cdn,缓存了各大js类库,你直接用就行了
地址如下

http://code.google.com/intl/zh-CN/apis/libraries/devguide.html#jqueryUI

又学到了一招

 回复 引用 查看   
#33楼[楼主] 2011-01-04 12:23 | Keep Walking      
@亚历山大同志
关键是要全世界的所有网站都能够采用同一份文件才可以缓存

 回复 引用 查看   
#34楼 2011-01-04 12:26 | 咕嚕咕嚕      
IT界缺的是秦始皇
把所有的标准都统一
操作系统统一
编程语言统一
数据库统一
浏览器统一
如果这实现了 节约的资源是不可估量的
不过这和共产主义一样是可望而不可及的!

 回复 引用 查看   
#35楼 2011-01-04 12:35 |       
这个应该直接做浏览器,而不是做服务器!
我个人感觉是有个的蛋糕可以吃!!!!!!!!

先和楼主握手!
我的思路:
1。 缓存技术使用在浏览器,当检测到了官方的url引用,例如jquery/extjs的,那么首先会读缓存,检测版本,再更新。

这样,就需要和jquery等谈了。当然,这步之前,可以自己架设服务器支持这个技术。

2。 主要针对手机浏览器,而不是电脑浏览器。电脑那点流量没有什么好节省的,但是手机就大不一样了。UCweb靠的就是自己的中转服务器赚钱,通过压缩流量打下了市场。

 回复 引用 查看   
#36楼 2011-01-04 12:37 |       
技术实现方面有点点难度,首先要看有没有可以借鉴的内核。然后再URL检测的时候要拦截操作,进行缓存判断。

如果真的能做出来,那么技术实力一定不错。估计能成为UC的级别企业。只不过,貌似没看到盈利模式。

这个盈利模式应该是个关键。

 回复 引用 查看   
#37楼[楼主] 2011-01-04 12:55 | Keep Walking      
@
握手!

 回复 引用 查看   
#38楼[楼主] 2011-01-04 12:58 | Keep Walking      
可惜我们的想法过于理想,哈哈,更极致的想法就是互联网应该有他的公共服务机构,比如警察局,消防局,劳教所,廉租房,两限房,哈哈
对应我们现在的垃圾邮件组织,反spam组织,APP免费托管应用,免费云计算等。

 回复 引用 查看   
#39楼 2011-01-04 13:00 | dushaobin      
我晕!要是一人一个服务那还用请求吗!!!
 回复 引用 查看   
#40楼 2011-01-04 13:11 | 夜落矇空      
这个办法行不通的~
 回复 引用 查看   
#41楼 2011-01-04 13:14 | 天时地左      
神马都是浮云
 回复 引用 查看   
#42楼 2011-01-04 13:31 | tubo      
CDN啊
 回复 引用 查看   
#43楼 2011-01-04 13:43 | 技术,趋势      
其实这就是一种大趋势,就是Web OS取代现在的OS,浏览器替代了Windows,JS可以在浏览器里面编译成本地代码,并通过Html5技术存在客户端。

想一想,JS越来越发展,功能比C++还强悍,可以在浏览器里被编译成本地代码。可以存储在浏览器,这才是真正的RIA技术。全球通用,所有的浏览器,终端都支持。一次编译,到处运行。

 回复 引用 查看   
#44楼 2011-01-04 13:56 | interjc      
可以作为浏览器的某种插件而存在,例如Flash,不过这个装机率的优势就不复存在了
 回复 引用 查看   
#45楼 2011-01-04 14:16 | 助平君      
引用有X%的网站还是使用古老的ETAG,lastmodified标记来做缓存。

能说说现代的缓存方法吗?

 回复 引用 查看   
#46楼[楼主] 2011-01-04 14:41 | Keep Walking      
@助平君
etag还需要开一个http连接,返回状态码的

 回复 引用 查看   
#47楼 2011-01-04 14:55 | 助平君      
@Keep Walking
有什么好的建议吗(例如具体的示例)?
至少据我所知,如果不使用etag和last-modified,Page Speed会指出并建议网站使用他们

 回复 引用 查看   
#48楼[楼主] 2011-01-04 15:26 | Keep Walking      
@助平君
指定一个具体的缓存过期时间,这样在缓存过期时间内,再次访问不用发起http请求了。

 回复 引用 查看   
#49楼 2011-01-04 15:29 | feilng      
有时间研究怎么把互联网
带宽提升100倍
响应时间降低100倍
价格降低100倍

 回复 引用 查看   
#50楼 2011-01-04 15:35 | snowmagic      
不早就这样了
公共代码比如jquery.js指向google或者microsoft的服务器
节省带宽

 回复 引用 查看   
#51楼 2011-01-04 15:39 | 助平君      
@Keep Walking
Thanks Walker, that's what i am exactly using for browser caching.
1. cache-control
2. etag
3. last-modified

 回复 引用 查看   
#52楼 2011-01-04 16:01 | 指针为空      
会造成和IE6一样的效果,N年之后,需要更新的时候突然发现,更新起来越来越难了.
 回复 引用 查看   
#53楼 2011-01-04 17:55 | 梦想      
想法是好的,呵呵
 回复 引用 查看   
#54楼 2011-01-04 17:57 | 徐少侠      
前面有兄弟说过了
CDN
呵呵

 回复 引用 查看   
#55楼 2011-01-04 18:06 | Jake Lin      
引用偶卖糕的:
孤陋寡闻的程序员,google和微软都有cdn,缓存了各大js类库,你直接用就行了
地址如下

http://code.google.com/intl/zh-CN/apis/libraries/devguide.html#jqueryUI

这个是正解,我一般用google的,不自己缓存。

 回复 引用 查看   
#56楼 2011-01-04 21:51 | 今天我不乖      
博主,并不是所有人都把jQuery,prototype之类的都拿来原封不动的引用的。
而且,并不是所有的人都相信别人的~~也不是所有的人都可信的~~

 回复 引用 查看   
#57楼 2011-01-04 21:52 | Create Chen      
推荐.
把自己的想法能说出来,不管想法好与不好,应该得到大家的支持.
人人都鼓励别人说出新想法来讨论,这个氛围多好

 回复 引用 查看   
#58楼[楼主] 2011-01-04 21:55 | Keep Walking      
@Create Chen
谢谢哈哈!您太给力了 !

 回复 引用 查看   
#59楼 2011-01-04 23:39 | 老好人@北京      
带宽、CUP时间、内存和存储、人力,这些资源是很宝贵的。

从现在的应用看,这些资源首先被尊重的是人力,原因很简单。

整个世界仿佛就朝着“浪费”的方向前进,而考虑其他资源的情况要少一些,至少大部分系统是这样的。

那就需要不停地投入基础设施的建设,不停地升级硬件系统。

大家对这种现象很乐意,所以就这样地发展着。

大家想想,浪费的岂止是一个库!为了打这段破字,多少个字节在陪衬!不说别的广告就不得了。

看来,节约资源并不是我们要考虑的首要因素,所以LZ没必要为这些发愁,更不需要解决方案,让他们浪费去吧。

 回复 引用 查看   
#60楼[楼主] 2011-01-04 23:44 | Keep Walking      
@老好人@北京
呵呵,您的分析很独到啊

我刚才做了网速测试,谷歌的做了CDN的jq代码请求比我网站的请求速度要慢很多,平均一个304请求谷歌需要220毫秒,而我的托管商只需要34毫秒,博客园需要100毫秒

 回复 引用 查看   
#61楼 2011-01-05 00:29 | 我是打酱油的      
如果看网络流量的分布,P2P和视频的比例比较高吧,在这些流量作1%的优化(比如一种新的压缩算法),效果应该明显很多。
 回复 引用 查看   
#62楼[楼主] 2011-01-05 08:54 | Keep Walking      
@我是打酱油的
使得,节省流量的办法有很多种,而且很多都比这个更给力

 回复 引用 查看   
#63楼 2011-01-05 09:01 | xluo      
引用偶卖糕的:
孤陋寡闻的程序员,google和微软都有cdn,缓存了各大js类库,你直接用就行了
地址如下
http://code.google.com/intl/zh-CN/apis/libraries/devguide.html#jqueryUI


楼主看看这个

 回复 引用 查看   
#64楼 2011-01-05 09:39 | LanceZhang      
google早就在做了,你说google的慢,这不是问题啊,如果按你想象的——大家都用google的js,那么缓存命中率超高,慢也只是慢一次
 回复 引用 查看   
#65楼 2011-01-05 10:47 | 不能飚车      
鸡蛋不要全部放到一个篮子里

否则干嘛要那么多DNS服务器,就一个就好了,或者就只要根域名服务器就好了。现在查个DNS还要来回几次,更新和同步DNS也要消耗大量带宽。

 回复 引用 查看   
#66楼 2011-01-05 13:25 | IT鸟      
引用咕嚕咕嚕:
IT界缺的是秦始皇
把所有的标准都统一
操作系统统一
编程语言统一
数据库统一
浏览器统一
如果这实现了 节约的资源是不可估量的
不过这和共产主义一样是可望而不可及的!

有才

 回复 引用 查看   
#67楼 2011-01-06 08:45 | 侯伯薇      
个人觉得,想要做世界级的东西,首先要有世界级的影响力,然后还要考虑到商业价值,毕竟没有哪家公司的钱是大风刮来的,如果就是免费为大家提供好处,而没有任何回报,我觉得没有哪家公司会来做的,呵呵。
 回复 引用 查看   
#68楼[楼主] 2011-01-06 09:02 | Keep Walking      
@侯伯薇
是啊,所以虽然微软和谷歌提供了,但是速度也不是很快,而且也没有大力气推广

 回复 引用 查看   
#69楼 2011-01-10 13:21 | 柳晛      
越抽象的东西越有重用价值,具体的东西很难重用。
 回复 引用 查看   
#70楼 2011-01-10 16:06 | 雨花台舞水      
小民意识
 回复 引用 查看   
#71楼 2011-05-06 13:40 | banana.totolv      
good
 回复 引用 查看