网站性能提升

1.减少 HTTP 请求

  • 图片地图
  • CSS Sprites
  • 内联图片和脚本
  • 样式表的合并

图片地图

Image Map 允许在一个图片上关联多个 URL。

  • 服务器端图片地图 将所有点击提交到同一个目标 URL,向其传递用户点击的 x、y 坐标。Web 应用程序将该 x、y 坐标映射为适当的操作。

  • 客户端图片地图 可以将用户的点击映射到一个操作,而无需向后端应用程序发送请求。

映射通过 HTML 的 MAP 标签实现。

缺点 如果采用手工方式则很难完成而且容易出错,而且除了矩形之外几乎无法定义其他形状。

如果正在导航栏或者其他超链接中使用多个图片,将它们转换为图片地图> 是加速页面的最简单方式。

Modernizr --- HTML5 和 CSS3 开发利器

Modernizr 是一个用来检测浏览器功能支持情况的 JavaScript 库。当你在网页中嵌入 Modernizr 的脚本时,它会检测当前浏览器是否支持 CSS3 的特性,比如 @font-face、border-radius、 border-image、box-shadow、rgba() 等,同时也会检测是否支持HTML5的特性——比如audio、video、本地储存、和新的 input 标签的类型和属性等。在获取到这些信息的基础上,你可以在那些支持这些功能的浏览器上使用它们,来决定是否创建一个基于 JS 的 fallback,或者对那些不支持的浏览器进行简单的优雅降级。另外,Modernizr 还可以令 IE 支持对 HTML5 的元素应用 CSS 样式,这样开发者就可以立即使用这些更富有语义化的标签了。

<meta> 常用 code

<meta http-equiv="X-UA-Compatible" content="IE=edge">

X-UA-Compatible 是 IE8 的一个专有 属性,它告诉 IE8 采用何种IE版本去渲染网页,在 html 的 标签中使用。在 IE8 刚推出的时候,很多网页由于重构的问题,无法适应较高级的浏览器,所以使用 X-UA-Compatible 标签强制 IE8 采用低版本方式渲染。

IE=edge 告诉 IE 使用最新的引擎渲染网页。

有些因素会自动触发兼容性文档视图,这个时候设置 X-UA-Compatible 就可以防止这个自动触发的行为。

默认行为大致有这些:
存在于注册表中的兼容性视图列表,当 url 匹配时将自动切换到兼容性视图
在注册表中的对应字段指定了使用兼容性视图来显示所有网站
未指定 DOCTYPE,则使用 Quirks 模式

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

chrome=1 则可以激活 Chrome Frame。

Node.js 4.0 (二)

Generator

Generator 函数有多种理解角度。从语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。

执行 Generator 函数会返回一个遍历器对象,也就是说, Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。

形式上, Generator 函数是一个普通函数,但是有两个特征。一是,function 命令与函数名之间有一个星号;二是,函数体内部使用 yield 语句,定义不同的内部状态( yield 语句在英语里的意思就是“产出”)。

Node.js-session 应用

在 web 应用中,多个请求之间共享 “用户会话” 是非常必要的。但 HTTP1.0 协议是无状态的。那这时 Cookie 就出现了。那 Cookie 又是如何处理的呢?

Cookie的处理:

  • 服务端向客户端发送 Cookie
  • 客户端的浏览器把 Cookie 保存
  • 然后在每次请求浏览器都会将 Cookie 发送到服务端

在 HTML 文档被发送之前, Web 服务器通过传送 HTTP 包头中的 Set-Cookie 消息把一个 cookie 发送到用户的浏览器中,如下示例:

Set-Cookie: name=value; Path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT;

Node.js 4.0 (一)

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm 是全球最大的开源库生态系统。

  Node v4 这个版本是 Node 和 iojs 合并后发布的首个稳定版本,并且为开发者带来了大量的 ES6 语言扩展。了解 Node.js中包括的 ES6 语言扩展。

  Node.js 4.0.0 尖端的技术,保持了项目的先进性。其中对 v8 的升级几乎做到了与 Chromium / Google Chrome 同步,达到了 4.5.x,它提供了很多新的语言功能。ECMA-262 是 JavaScript 语言规范的最新版本,而且好多新特性数都是开箱即用的。这些新特性包括:

classes - 各种 ‘类’,再也无需用 CoffeeScript 的语法糖写类了
generators - 未来的.js 代码中将有无数生成器,不学一点就看不懂 JS 代码了哦
collections - 集合、映射、弱集合、弱映射
arrow functions - 箭向函数
block scoping - 使用 let 、const 作用域,块辖域
template strings - 模板字串
promises - 用标准化了的方法进行延迟和异步计算
symbols - 唯一的、不可修改的数据

Node.js 部分基础知识整理

回调函数

由于 node 是一个异步事件驱动的平台,所以在代码中我们经常需要使用回调函数。下面是回调函数应用的示例:

setTimeout(function(){
console.log('callback is called');
},2000);

我们传给 setTimeout 函数传入了一个匿名函数和一个调用时间 2000 (毫秒),运行程序后等待 2 秒,可以看到输出了”callback is called”。

标准回调函数

node.js 中回调函数格式是约定俗成的,它有两个参数,第一个参数为 err,第二个参数为 data,顾名思义,err 是错误信息,data 则是返回的数据,示例如下:

function(err,data){

}

Redis 初识(二)

在此是对实验楼的练习笔记的整理。

Redis 设置相关命令

CONFIG GET:用来读取运行 Redis 服务器的配置参数。
CONFIG SET:用于更改运行 Redis 服务器的配置参数。
AUTH : 认证密码

CONFIG RESETSTAT:重置数据统计报告,通常返回值为’OK’。

INFO [section] :查询 Redis 相关信息。

命令参数可以查看官方文档: http://redis.io/commands/config-resetstat

应用

1.安全性

设置在客户端连接是需要指定的密码(由于 redis 速度相当的快,一秒钟可以 150K 次的密码尝试,所以需要设置一个密码强度很大的密码)。

设置密码的方式有两种:

(1) 使用 config set 命令的 requirepass参数,具体格式为config set requirepass “password”
(2) 配置 redis.conf 中设置requirepass 属性,后面为密码。

输入认证的方式也有两种:

(1) 登录时可以 redis-cli -a password

(2)登录后使用auth password

Redis 初识(一)

在此是对实验楼的练习笔记的整理。

Redis 是什么

Remote DIctionaryServer(Redis) 是一个由 Salvatore Sanfilippo 写的key-value存储系统。
Redis 提供了一些丰富的数据结构,包括 lists, sets, ordered sets 以及 hashes ,当然还有和 Memcached 一样的 strings 结构。Redis 当然还包括了对这些数据结构的丰富操作。

Redis 常被称作是一款数据结构服务器(data structure server)。Redis 的键值可以包括字符串(strings)类型,同时它还包括哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。 对于这些数据类型,可以执行原子操作。例如:对字符串进行附加操作(append);递增哈希中的值;向列表中增加元素;计算集合的交集、并集与差集等。

优点

性能极高 – Redis能支持超过 100K+ 每秒的读写频率。

丰富的数据类型 – Redis 支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

原子 – Redis 的所有操作都是原子性的,同时 Redis 还支持对几个操作全并后的原子性执行。

丰富的特性 – Redis 还支持 publish/subscribe, 通知, key 过期等等特性。

安装参考链接: http://www.linuxidc.com/Linux/2014-05/101544p2.htm