未在HTTP标头错误中指定字符集


15

使用Page Speed 测试页面时,出现Specify a character set错误:

The following resources have no character set specified in their HTTP headers. Specifying a character set in HTTP headers can speed up browser rendering.

Content-Type标签存在,且网页被保存UTF-8编码一样,所以这里是哪里来的错误?


阿帕奇在哪里?哪个目录?

Answers:


19

它引用的是响应标题,而不是文档正文(“ Content-Type标记”)。

如果您使用任何HTTP调试器(例如Firefox 的Firebug的“网络”面板或Google Chrome / Internet Explorer / Safari / Opera中的“ 开发人员工具”的类似标签)来检查页面的响应标题,您将看到以下行:

Content-Type: text/html

同时,如果对此页面进行相同的检查,则会看到:

Content-Type: text/html; charset=utf-8

Page Speed是指缺少的部分。有了正确的出现在标题字符集确实会加快渲染页面。在响应标头中指定了错误的字符集(或根本没有字符集)的情况下,浏览器需要扫描/解释页面,直到找到正确的字符集声明(该<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />行)为止,然后如果字符集与浏览器的字符集不同,则重新启动呈现过程。默认设置。

性能损失根本不是很大-对于用户而言,除非使用了真正的旧/慢硬件(尽管每个浏览器和浏览器版本都不同),否则它并不引人注意。也许还有其他与之直接相关的“惩罚”,但我个人没有意识到。

修复:如果您自己(在PHP脚本中)生成此标头,则需要对其进行更改以包括字符集。如果您的脚本不执行此类标头操作,则是服务器配置错误。


我刚刚补充header('Content-type: text/html; charset=UTF-8');。非常感谢!
亚历克斯

6
您也可以使用来查看响应标题curl --head $url。默认字符集可以在Apache中通过添加AddDefaultCharset utf-8到.htaccess之类的配置文件中来指定。
Lri 2012年

+1为清楚的解释,常常对此感到疑惑,并感到困惑。解决与htaccess AddDefaultCharset添加
玛拉基书

<meta charset="utf+8">不够吗?
丹尼尔·斯普林格
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.