Page 193 - Web性能权威指南
P. 193
资源被更新,那么所有以前出现过它的页面都将被宣告无效,而由客户端重新从服
务器获取。
最后,虽然 CSS 和 JavaScript 等基于文本的资源很容易直接嵌入页面,也不会带来
多余的开销,但非文本性资源则必须通过 base64 编码,而这会导致开销明显增大:
编码后的资源大小比原大小增大 33% !
base64 编码使用 64 个 ASCII 符号和空白符将任意字节流编码为 ASCII
字符串。编码过程中,base64 会导致被编码的流变成原来的 4/3,即增大
33% 的字节开销。
实践中,常见的一个经验规则是只考虑嵌入 1~2 KB 以下的资源,因为小于这个标
准的资源经常会导致比它自身更高的 HTTP 开销。然而,如果嵌入的资源频繁变更,
又会导致宿主文档的无效缓存率升高。嵌入资源也不是完美的方法。如果你的应用
要使用很小的、个别的文件,在考虑是否嵌入时,可以参照如下建议:
• 如果文件很小,而且只有个别页面使用,可以考虑嵌入;
• 如果文件很小,但需要在多个页面中重用,应该考虑集中打包;
• 如果小文件经常需要更新,就不要嵌入了;
• 通过减少 HTTP cookie 的大小将协议开销最小化。
178 | 第 11 章