一般网页加载速度和性能最佳实践

时间:2011-01-26 17:40:23

标签: performance

有哪些一般(不是特定于LAMP,.NET,Ruby,mySql等)的策略和最佳实践来提高页面加载速度?

我正在寻找有关缓存,HTTP标头,外部文件缩小(CSS,JS)等的提示。

适用于Google PageSpeed和Yahoo YSlow等优秀工具。

“终极资源”wiki风格的“不要忘记的事情”清单(由SO上的所有向导主持和更新)是最终目标。所以人们不必无休止地关注这个主题过时的博客文章。 ;)

我希望“主观”mod对我来说很容易,我知道这有点开放。之前已经在这里询问了 similar questions此材料与ServerFaultWebmasters的域重叠太多。但是没有真正涵盖这个问题的中心“维基”问题所以我希望能够开始一个。有great questions这样的东西,我一直在SO上提到!感谢

2 个答案:

答案 0 :(得分:5)

  • 页面内容缓存
  • 在页面底部加载javascript
  • 缩小css(和javascript)
  • Css和javascript应该在他们自己的[外部]文件
  • 如果可能,将所有js或css文件合并为每种类型之一(保存服务器请求)
  • 使用Google的jQueryjQuery UI加载器(因为它可能已在某些计算机上缓存)
  • Gzip压缩
  • 图片的大小应与标记中的宽度和高度相同(避免调整大小)
  • 在适当的时候使用图像精灵(但不要过度使用)
  • 正确使用HTML元素即。使用<H#>标记标题
  • 避免div-itis或现在更流行的ul-itis)
  • 尽可能地集中javascript选择器即。 $('h1.title')比$('。title')
  • 快得多

答案 1 :(得分:2)

让您的动态内容更加静态

如果您可以将公共页面呈现为静态内容,则可以帮助代理,缓存,反向代理,例如 Web应用程序加速器&amp; DDOS防止基础设施。

这可以通过多种方式完成。当然,通过处理缓存标头,您甚至可以考虑使用ajax查询来提供真实静态页面以提供动态内容,当然这两种解决方案之间的混合,使用高速缓存标头使大多数浏览器和反向代理的主页都静止几个小时。

静态与ajax解决方案作为主要缺点, SEO ,机器人将无法看到您的动态内容。您需要一种方法来为这些动态数据提供机器人(以及一种处理用户从搜索引擎网址访问此数据的方法,大地狱)。所以反模式是在静态页面中拥有真正重要的SEO数据,而不是在ajax动态内容中,并限制ajax花哨的用户交互到用户体验。但是,复合页面上的用户体验可能比搜索egine机器人体验更具动态性。我的意思是为用户每分钟更换最新的机器人时间。

您还需要防止过早使用会话Cookie 。大多数代理缓存都会避免缓存包含cookie的任何HTTP请求(这是HTTP的官方规范)。这个问题通常是应用程序在所有页面上都有登录表单,并且需要登录表单的POST上的现有会话。这可以通过单独的登录页面或登录POST上的高级重定向来修复。反向代理缓存中的cookie处理也可以在像Varnish这样的现代代理缓存中使用一些配置设置来处理。

编辑:反向代理页面的一个高级用法非常有用: ESI ,例如varnish-esi。您可以添加ESI反向代理将识别的html渲染标记。这些已识别区域中的大部分可以具有不同的TTL - 生存时间 - (假设整个页面为1天,最新新块为10分钟,聊天块为0)。反向代理将使请求进入自己的缓存或后端来填充这些块。

由于Web存在处理代理和缓存一直是欺骗用户的主要技术,因此认为网络很快。