WebSocket 压力测试

websocket-bench 是个用 Node.js 编写的命令行工具,可以对使用 Socket.io、faye、Primus、WAMP 编写的长连接应用进行性能和压力测。 websocket-bench 安装 1 npm install -g websocket-bench 使用说明 以 CentOS 6.5 为例。首先要修改一下文件打开数,默认是1024,修改为一个比较大的值,总共65535个端口,websocket-bench 推荐设置的是 60000 ,命令如下: 1 ulimit -n 60000 websocket-bench 的参数设置 1 websocket-bench -a …

浏览器缓存机制&处理方法

背景 开发中,经常遇到的问题:修改过css样式或者js代码,F5刷新浏览器,代码并没有生效,这是浏览器缓存造成的,浏览器设计的目的是为了节省用户流量,因为资源文件一般较稳定,数量多,但修改量少。 浏览器缓存机制 ① 首次加载 ② 再次加载 相关术语 Etag HTTP协议规格说明定义ETag为“被请求变量的实体值”。另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端,以下是服务器端返回的格式:ETag:”2400-5437207ef28 …

前端图片压缩基于(h5 file API & canvas)

前端压缩的意义   对于大尺寸图片的上传, 如头像等, 在前端进行压缩除了省流量外,最大的意义是提高了上传速度, 改善了用户体验。 以下例子可作为一个头像上传压缩, 图片被压缩至长宽最大小于200px。 实现原理 核心API使用canvas的drawImage()方法。 canvas的drawImage()方法API如下: context.drawImage(img, dx, dy); context.drawImage(img, dx, dy, dWidth, dHeight); context.drawImage(img, sx, sy, sWidth, sHeight, dx, …

为什么用 void 0 代替 undefined

undefined 不是保留词,它只是全局对象的一个属性,在低版本 IE 中能被重写。 undefined 在 ES5 中已经是全局对象的一个只读(read-only)属性了,它不能被重写。但是在局部作用域中,还是可以被重写。 为什么选择 void 0 作为?undefined 的替代品? void 运算符能对给定的表达式进行求值,然后返回 undefined。也就是说,void 后面你随便跟上一个表达式,返回的都是 undefined,都能完美代替 undefined!那么,这其中最短的是什么呢?毫无疑问就是 void 0 了。其实用 void 1,void (1+1),void (0) 或 …

nginx配置详解

#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /var/log/nginx/error.log info; #进程文件 pid /var/run/nginx.pid; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit …

浏览器渲染原理

1、首先渲染引擎下载HTML,解析生成DOM Tree 2、遇到css标签或JS脚本标签就新起线程去下载他们,并继续构建DOM。(其中css是异步下载同步执行)浏览器引擎通过 DOM Tree 和 CSS Rule Tree 构建 Rendering Tree 3、 通过 CSS Rule Tree 匹配 DOM Tree 进行定位坐标和大小,这个过程称为 Flow 或 Layout 。 4、最终通过调用Native GUI 的 API 绘制网页画面的过程称为 Paint 。 当用户在浏览网页时进行交互或通过 js 脚本改变页面结构时,以上的部分操作有可能重复运行,此过程称为 Repaint …

JavaScript Object的属性

对象的数据属性 Configurable,Enumerable,Writable,Value 访问器属性 getter,setter   定义多个属性 Object.defineProperties 读取属性 本文链接地址: JavaScript Object的属性

Three.js 绘制 3D 图形

一、前言 Three.js 是一款 webGL(3D绘图标准,在此不赘述)引擎,可以运行于所有支持 webGL 的浏览器。Three.js 封装了 webGL 底层的 API ,为我们提供了高级的开发接口,可以使用简单的代码去实现 3D 渲染。(官网:https://threejs.org/) 二、为什么要选择Three.js? Three.js作为原生web3D引擎,对插件式 web3D引擎的优势不言而喻:不需要安装插件、在移动端支持好。 Three.js 与其他原生 web3D 引擎对比: Babylon.js:一个强大的 3D 游戏引擎,由 Microsoft 的员工 David Cat …