“页面开始呈现之前所需的所有内容都应来自同一服务器”规则通常适用于您的服务器或其他较小的资源-在这种情况下,DNS查找可能花费一秒钟的明显时间(如果您的对象散布在许多域中,则可能会迅速增加)。使用Google的jQuery缓存和其他库等通用公共资源,您的访问者的浏览器很可能已经在今天进行了DNS查找(因为其他站点正在引用该服务的内容),并且文件也可能在缓存中,因此没有传输需要完成(或者,如果发出请求,它可能只会返回简短的“ 304-未修改”响应)。即使需要完全下载该对象,对于大多数用户而言,Google的内容交付网络也将比您的小规模运营更快。
一个相关规则:页面的正确功能不需要的对象(如用户所见)应在主HTTP响应中尽可能晚地引用。例如,诸如广告/统计服务所需的脚本(即Google Analytics(分析)及其类似工具)之类的内容-尽快为用户提供您的内容,然后加载您真正感兴趣的背景内容。我封锁了一些广告/统计服务(通过将它们映射到我的主机文件中的127.0.0.1),因为它们通常太慢了,而且早先引用它们的网站在等待脚本时给了我空白页较晚地引用它们,以便我可以阅读我在那里的内容,而其他内容则在后台徘徊。
无cookie的域对静态内容的有用性取决于规模。如果您在Cookie中只有一个10字节的会话ID,并且每天有一万名访问者每次访问请求约20个静态对象,那么您每月仅节省约118 MB的带宽(20 * 20 * 10000 * 31/1024/1024)。另一方面,如果您的站点在Cookie中保留了一个或两个KB的内容,则差异可能会更大得多,尤其是如果您的任何用户通过慢速连接(例如,通过网络绑定到移动设备的GPRS或-在高干扰区域拥挤的wifi链接),或者每天获得数百万次访问。
总而言之,对于在页面可以呈现我的首选项之前必须加载的脚本,将是:
- ajax.googleapis.com或类似的
- 呼叫页面的原始主机名
- 静态无cookie域
对于对于初始页面呈现来说不是必不可少的资源,请尽可能晚地引用它们,并反转上面的首选项列表(尽管除非大规模运行,否则原始主机名和无cookie域之间的差异很可能并不重要。 )。
With common public resources ... there is a good chance that your visitor's browser has already done that DNS lookup today
就个人而言,在我的网站上依靠它会感到不舒服。我希望它在尽可能多的情况下尽可能快。无论如何,您都提出了要点。+1