在服务器设置字符集
概览
在服务器层指定字符集,可以减少浏览器的处理进程,让浏览器立即执行脚本,加快浏览器的显示速度。
什么是字符集定义
字符集实质上是一组由一台计算机数字表示的字符。例如,ASCII字符集使用数字0-127来表示所有的英语字符以及特殊的控制字符。
为什么这么重要
在HTML文档的HTTP响应头指定一个字符集,对允许浏览器开始解析HTML并立即执行脚本是非常重要的。
如果没有指定一个字符集,浏览器需要自己来弄清楚,因此会影响您的页面加载时间。
为什么应该避免在meta http-equiv标签指定字符集?
在Internet Explorer8浏览器,在meta http-equiv标签指定字符集将不能超前下载,不能先行下载会大大增加加载页面的时间。
Web开发人员应在HTTP的Content-Type响应头指定字符集,因为这可以确保先行下载的性能优势得以实现。
怎样做
为了避免使用meta标签必须在服务器设置字符集。
这是设置字符集最有效的方法,因为你不需要设置每一页。设置你的服务器向所有文件发送一个Content-Type头类型是text/html。
例如
Content-Type: text/html; charset=UTF-8
charset是你设置字符类型的地方。
建议
使用HTTP而不用meta标签参数
这里有几种设置HTML文档字符集的方法
- 服务器端:配置你的服务器Content-Type头,为所有类型为text/html的文档,用正确的字符编码指定charset参数,例如,
Content-Type: text/html; charset=UTF-8 - 客户端:在HTML代码的meta标签包含http-equiv="content"属性,例如,
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
如果可能,配置你的web服务器在HTTP头指定字符集。一些浏览器(例如Firefox)在执行JavaScript之前使用短暂缓冲延迟,如果charset是在头部指定的话。这就意味着,他们能略过这额外的检测HTML标记的缓冲延迟。
在<head>最上面用meta标签指定字符集
如果你不能设置你的web服务器,但需要在meta标签设置charset的话,一定要在<head>部分的最上面指定这个标记。浏览器在前面的1024字节查找charset参数,所以为了避免性能下降,参数尽可能早地出现在文档头部是至关重要的。
指定内容类型
在浏览器可以开始检测字符集之前,他们必须首先确定该文件的内容类型被处理。如果没有在HTTP头或HTML meta标签中指定,它们将使用不同的算法尝试“嗅”这个类型。这个过程可导致额外的延迟,此外也是一个安全漏洞。为了性能和安全方面的原因,你应该总是指定所有资源的内容类型(不仅是text/html)。
指定正确的字符编码
在HTTP头或HTML meta标签指定的字符集匹配你实际用来创建HTML文档的字符编码是重要的。如果同时指定HTTP标头和HTML meta标记字符集参数,一定要确保它们相互匹配。如果浏览器检测到不正确或不匹配的编码,它会错误地渲染页面和/或产生额外的延迟,从而重绘页面。有关有效字符集的详细信息,请参见HTML 4.01 Specification里Section 5.2, Character Encodings。