css - 我应该瞄准更少的 HTTP 请求还是更多可缓存的 CSS 文件?

标签 css performance http

我们被告知每次页面加载的 HTTP 请求越少越好。 CSS 的极端形式是每个页面有一个唯一的 CSS 文件,每个文件中复制任何共享的站点范围样式。

但这里需要权衡取舍。如果您有单独的共享全局 CSS 文件,它们可以在加载首页时缓存一次,然后在多个页面上重复使用,从而减少页面特定 CSS 文件的必要大小。

那么在现实世界中哪个更好呢?通过多个可缓存的离散 CSS 文件来缩短 CSS 文件,或者通过更少但更大的 CSS 文件来减少 HTTP 请求?

最佳答案

您的第一个停靠港正在使用 YSlowGoogle Speed找出您网站上最慢的内容。有时,一两个压缩不当的(大)图像可能会减慢整个过程。你被告知要减少 HTTP 请求,因为每个请求都有与之相关的设置成本,但如果采取极端措施可能会导致性能下降。在您的情况下,每个页面都有一个 CSS 文件是错误的形式,因为这意味着浏览器更难缓存。

将一种方法发挥到极致是一种不好的做法,您应该尝试从更广的 Angular 来解决这个问题,例如:

  • 适当压缩图片或使用 CSS sprites(减少 HTTP 请求)
  • 使用 Expres、ETag 等实现适当的网络缓存(因此客户不必重新请求所有内容)
  • 使用 YUI 优化您的 CSS 和 Javascript 文件或其他类似工具
  • 改进您的 CSS/javascript 代码以提高性能。某些 CSS 选择器可能会导致浏览器花费更长的时间来呈现页面
  • 尽可能用纯 CSS 替换图片,例如背景颜色等。
  • 对任何文本输出使用 GZip 压缩,例如 html、css、js

如有疑问,请查看 Google 主页的源页面。他们对该页面进行了大量优化,它会为您提供有关操作的良好线索。

关于css - 我应该瞄准更少的 HTTP 请求还是更多可缓存的 CSS 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685520/

相关文章:

javascript - 更改单个占位符字符颜色?

javascript - 在幻灯片放映开始之前,所有幻灯片的图像都显示在一个堆栈中,打破了网站的布局几分之一秒

CSS 高度 = 宽度?

performance - hadoop/YARN如何确定一个节点很慢,它对该节点的任务有何作用?

arrays - 代码优化: Arrays vs collections

javascript - 如何用 'http get' 更新 $scope 变量?

jquery - jQuery Kwicks slider 中图像上的两个同时叠加具有不同的超链接

php - 将 MySQL SELECT 查询与 IF 语句结合起来

ajax - HTTP 请求返回状态码 0 是什么意思?

asp.net-mvc - 在 ASP.NET MVC5 中,如何获取移动用户请求的平台和设备类型