基于Html5缓存的页面P2P技术可行性探讨
P2P技术,在分享大文件(你懂的)是现在必不可缺的技术,现在的人,已经很难想象在没有这玩意的互联网早期,人们是怎样的艰难求生。想当年,不要说电影,下一个稍大点的文件,都是很吃力的事情。
后来牛人科恩,发明了P2P技术,见这里【科技英雄传】BitTorrent技术之父:科恩
P2P技术发明后,其互联网带宽占到了7成以上,可见此技术的威力,网络有多快,分享就有多快,速度不在受到终端或服务器限制,而是受到网络,也就是道路的限制。真正回归到网络的本质。
作为程序员,我们经常为一个问题苦恼,就是性能,怎么让服务器支撑更多的人,更多的访问流量?这是一个大问题。
我们看看传统的解决方案,不断的提高服务器的并发,使用服务器缓存,使用大数据,使用分布式数据库,使用CDN,加CPU,加内存,加带宽,限制用户数,等等等等。这些手段,都是治标不治本,中心或分中心模式,不管怎么做,最终都有问题,这也不是网络模式。这就和买票一样,都跑一个地方买,再快的抢票软件也一样没用。
那么,有没有可能,象P2P一样,把网页也给P2P了呢?从原理来看,其实是可行的。
原理是这样的,比如我访问这个页面,那么数据已经在我浏览器里了,但是,我浏览器里的内容可以分享啊,通过P2P技术,其它用户相互间分享同一时间的同一页面内容,和P2P原理一样,同一页面访问的人越多,那么速度反而越快。
如果有人能搞出页面P2P技术,那么世界将再次被改变,任何页面,都可以支撑全球所有的访问量。从此网站再也不怕大用户,用户越多,网站越快,刚好和现在的模式相反,我们再也不需要优化网站了。
但是这种一篮子的解决方案,可不可行呢?有没有人能搞出来呢?从原理来看是可行的,但实际上很困难。原因是很多页面不仅仅只是静态内容,而且页面很复杂,文本,数据,图片,甚至视频。
但是部分的解决方案还是有的,比如云服务,把图片,视频等放在第三方,CDN服务,把一些公用代码放第三方,还有网页加速服务,比如什么数字的风行计划,给网站缓存加速。
当然了,上述这些解决方案,都是很费事又费钱的东西,最好就是浏览器支持本身支持网页P2P,但这个技术看上去,这几年都不用指望了,作为创业者或中小企业网站,有没有成本更低廉的办法,解决性能问题?
这就可以使用一些Html5的先进技术了,Html支持本地存储,和本地缓存,但对于动态加载的页面可能还需要自已进一步编码,如果我们把样式表,代码,通用数据,图片,在第一次加载后,再用脚本方式存在本地数据库,当然这得需要一个版本管理技术。
这样的话,除了第一次慢点,以后因为有大量内容被缓存到了本地,那么Web应用就有点类似传统的C/S应用了。服务器端的压力被大大减轻。
但是,用户多了服务器还是一样有性能问题,能不能在A客户缓存了本地数据以后,B客户访问网站时,直接把A客户,导向B客户,让A客户取得B客户的缓存数据呢?
答案是可以的,但不是现在,W3C正在开发P2P浏览器标准,让你的浏览器和他的浏览器实时通信,不需要经过服务器,可见此技术,在将来是可行的,但现在没有足够的支撑。
由此可见,现在如果利用Html5技术,解决如下几个问题:
一是本地存储的版本问题,这样服务器更新后,就从服务器上取新数据,如果没有更新就读取本地缓存。
二是本地存储的读取写入,以及路径问题,这需要有一种机制,让应用不需要管数据的来源是本地还是服务器,把资源路由交给一个统一机制,由它去判断
版本问题有比较现成的解决思路,比如时间过期,或者是版本号,加个二维码什么的。资源路由就不太清楚,这需要进一步的摸索。但是,优先考虑Html5的本地存储及缓存技术,应该是一个低成本解决性能问题的方案。而这种方案,还可以为将来到来的浏览器P2P做准备。
基于Html5缓存的页面P2P技术可行性探讨的更多相关文章
- 基于html5页面滚动背景图片动画效果
基于html5页面滚动背景图片动画效果是一款带索引按钮的页面滚动动画特效代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div id="fullpage&q ...
- 基于html5整屏切换IDO智能手表页面滚动代码
之前为大大家介绍了一款jquery实现的整屏切换特效.今天分享一款IDO智能手表页面滚动html5代码.这是一款基于jQuery+HTML5实现的页面滚动效果代码.效果图如下: 在线预览 源码下载 ...
- 基于html5和css3响应式全屏滚动页面切换效果
分享一款全屏响应式的HTML5和CSS3页面切换效果.这个页面布局效果对于那些页面要求固定100%高度和宽度的网站和APP来说是十分有用的.效果图如下: 在线预览 源码下载 HTML wrappe ...
- 基于HTML5的Web SCADA工控移动应用
在电力.油田燃气.供水管网等工业自动化领域Web SCADA的概念已经提出了多年,早先年的Web SCADA前端技术大部分还是基于Flex.Silverlight甚至Applet这样的重客户端方案,在 ...
- 基于 HTML5 的 WebGL 和 VR 技术的 3D 机房数据中心可视化
前言 在 3D 机房数据中心可视化应用中,随着视频监控联网系统的不断普及和发展, 网络摄像机更多的应用于监控系统中,尤其是高清时代的来临,更加快了网络摄像机的发展和应用. 在监控摄像机数量的不断庞大的 ...
- 基于 HTML5 的 WebGL 自定义 3D 摄像头监控模型
前言 随着视频监控联网系统的不断普及和发展, 网络摄像机更多的应用于监控系统中,尤其是高清时代的来临,更加快了网络摄像机的发展和应用. 在监控摄像机数量的不断庞大的同时,在监控系统中面临着严峻的现状问 ...
- 基于HTML5 Canvas和jQuery 的绘图工具的实现
简单介绍 HTML5 提供了强大的Canvas元素.使用Canvas并结合Javascript 能够实现一些很强大的功能.本文就介绍一下基于HTML5 Canvas 的绘图工具的实现.废话少说,先看成 ...
- 基于 HTML5 WebGL 的加油站 3D 可视化监控
前言 随着数字化,工业互联网,物联网的发展,我国加油站正向有人值守,无人操作,远程控制的方向发展,传统的人工巡查方式逐渐转变为以自动化控制为主的在线监控方式,即采用数据采集与监控系统 SCADA.SC ...
- B/S 端基于 HTML5 + WebGL 的 VR 3D 机房数据中心可视化
前言 在 3D 机房数据中心可视化应用中,随着视频监控联网系统的不断普及和发展, 网络摄像机更多的应用于监控系统中,尤其是高清时代的来临,更加快了网络摄像机的发展和应用. 在监控摄像机数量的不断庞大的 ...
随机推荐
- 编写Java应用程序。首先,定义一个Print类,它有一个方法void output(int x),如果x的值是1,在控制台打印出大写的英文字母表;如果x的值是2,在 控制台打印出小写的英文字母表。其次,再定义一个主类——TestClass,在主类 的main方法中创建Print类的对象,使用这个对象调用方法output ()来打印出大 小写英文字母表。
package zuoye; public class print1 { String a="abcdefghigklmnopqrstuvwxyz"; String B=" ...
- Storm系列(二):使用Csharp创建你的第一个Storm拓扑(wordcount)
WordCount在大数据领域就像学习一门语言时的hello world,得益于Storm的开源以及Storm.Net.Adapter,现在我们也可以像Java或Python一样,使用Csharp创建 ...
- mysql 动态新建以及删除分区表
因为项目需要,最近研究了一下在mysql数据库下如何动态新建以及删除分区表.如果全部借助存储过程的话,新建以及删除分区表在逻辑上比较死板.不灵活,而且还容易出错.因此,我新建了一个数据表table_f ...
- pwd, cd, ls, touch, mkdir, rmdir, rm
学习Shell命令最好的资料当然的是$man, 绝对是查找命令的第一大杀器,但是我们有时只是想实现某个功能,甚至连这个命令是什么都不知道,又或者不想淹没在man里大段大段的英文里,大家可以参考Linu ...
- Android,LIstView中的OnItemClick点击无效的解决办法
在List_Item布局文件中的根节点加上如下背景标黄的这一行 <?xml version="1.0" encoding="utf-8"?> < ...
- 8、FTP,二种文本传输模式
一.基本知识 1. FTP是 TCP/IP协议族 的协议之一,简称文件传输协议,主要用于远距离文件传输,如文件的上传和下载 2. 下面都是以VSFTP服务器为例 VSFTP服务器的用户有三种形式: 匿 ...
- 聚合数据董铭彦:小程序开发的兴起将带火API数据交易
2016中关村大数据日活动近日在京举办,今年新进驻北京的聚合数据受邀参与,在13日举行的大数据交易专场论坛上,聚合数据副总裁董铭彦与参会嘉宾以"共筑数据交易产业生态,共享大数据时代红利&qu ...
- 新手必学的java报表开发工具FineReport实用技巧
1.在制作模板时,如何将报表中的值传递到超链接网页呢? 在项目中以frame方法把F1.CPT放到项目的页面中,对F1.CPT做网络报表超链接F2.CPT,然后在F2.cpt页面中,做个超链接的网页, ...
- 其实今天没有欲望..-MySQLi
hi 中午爽爽的游了会儿泳,但是下午把一拳超人看完了,竟然萌生不出学习的欲望了...强迫自己更新点东西吧,一会儿看书去. 1.MySQLi 二.MySQLi基于OOP的编程 2.1 使用解析 --基本 ...
- 线程同步以及yield()、wait()、Notify()、Notifyall()
一.线程同步 1.线程同步的目的是为了保护多个线程访问一个资源时对资源的破坏. 2.线程同步方法是通过锁来实现,每个对象都有切仅有一个锁,这个锁与一个特定的对象关联,线程一旦获取了对象锁,其他访问该对 ...