摘要:
前几天,一个同事说他写的web静态服务器不支持音视频的播放,现简单实现一下。原理:实现http1.1协议的range部分。其实这一点都不神秘,我们常用的下载工具,如迅雷,下载很快,还支持断点续传,就是利用http协议的range和多线程实现的。假如下载一个1MB的文件,如果开一个线程下载,那么只能从头到尾依次下载这个文件,这样不可能提升速度。通常,下载工具会开很多个线程,这里暂且假设是4个,然后这4个线程同时分别下载这1MB的0~255KB、256-511KB、512~767KB和768~1024KB,很显然,理论上速度提升了4倍。那么怎么将服务器上的1MB文件分成4份呢?这就是range的强 阅读全文
摘要:
返回对象自己(非原型继承的属性)的属性名称,包括函数。方法: Object.getOwnPropertyNames(object); Object.keys(object);参数: object,如果不是object类型,则引发TypeError异常。例子: 'use strict';(function(){ if(!Object.getOwnPropertyNames){ console.log('浏览器不支持getOwnPropertyNames'); return; } //人类的构造函数 var person = functi... 阅读全文
摘要:
添加属性到对象,或修改现有属性的特性用法:Object.defineProperty(object, propertyName, descriptor);参数: object :作用的对象,可以是javascript对象,或dom对象。 propertyName :属性名,字符串。 descriptor :属性的特性描述,区分数据属性或访问器属性。返回值: 修改后的对象。异常: 1.object不是对象。 2. object不可扩展。 3. descriptor有value或writable特性,同时有get和set特性。 4. descriptor的get和set特性不是函数。 ... 阅读全文
摘要:
特点: 1.离线可访问 - 没有网络仍可访问整个应用 2.很小的服务器负载 - 缓存在本地,不需要到服务器请求 3.高速 - 加载几乎不需要时间典型应用场景: 1.网页游戏 2.单页面应用传统浏览器缓存(Browser Caching): 1.缓存协商 last-modified, Etag 请求资源时去服务器询问资源有没有修改过,如果没有就返回304使用缓存的资源,更改过就返回新资源。 缓存协商过程: 1.服务器返回带有类似Last-modified:Mon, 04 Feb 2013 11:21:50 GMT的响应。 2.浏览器发送带有类似I... 阅读全文