YSlow 给如何提高网页效率和优化网站性能提供了 22 条建议,其中有一条是关于域名的:Use cookie-free domains 。
使用 cookie-free domains 有什么好处呢?当用户浏览器发送一个静态文件,如图片 image 、 CSS 样式表文件时会同时发送同一个域名 (或二级域名) 下的 cookies,但是网站服务器对发送过来的 cookies 完全不予理会,因此这些没用的 cookies 白白浪费了网站带宽,影响网站加载速度和网页性能表现。 YSlow 建议为了解决这个问题,就可以通过使用 cookie-free domains 的方法来做优化,从而提高网页效率。
使用二级域名作为 cookie-free domains
通俗地说,所谓的 cookie-free domains 就是在浏览器发送静态内容的请求时不会发送 cookies 的域名。 YSlow 提示可以申请注册一个二级域名专门用来储存这些静态图片、 JS 、静态 CSS 文件。
在前面泛域名解析设置影响 seo 和 Google PR 值这里提到了 www 开头,形如 www.farlee.info 的域名实际上也是属于二级域名。如果你的网站主域名是 www 开头的域名,建立一个二级域名作为单独储存 (hosting) 静态图片、 JS 、 CSS 文件的 cookie-free domains 是可行的;但是如果网站主域名用的是比较短的顶级域名,如远方博客用的是不带 www 的顶级域名 farlee.info,使用新创建的二级域名作为 cookie-free domains 的方法是无效的。因为顶级域名 farlee.info 会向所有被请求的静态文件二级域名服务器发送 cookies 。
即 www.farlee.info 和 abcimg.farlee.info 是互相独立的两个 「二级域名」,不会造成域名污染, abcimg.farlee.info 可以作为 cookie-free 域名;但是需要做一些设置,比如下面介绍的 WordPress 博客设置 wp-config.php 文件的实例。
顶级域名 farlee.info 会向所有被请求的二级域名 (子域名:www.farlee.info 和 abcimg.farlee.info) 发送 cookies,abcimg.farlee.info 也会被污染,不能当作 cookie-free 域名。具体原因在下面 WordPress 博客 cookie-free domains 设置中有介绍。
使用独立域名作为 cookie-free domains
那么使用顶级域名的博客应该如何使用 cookie-free domains?解决方法是使用另外一个独立域名。比如雅虎 Yahoo! 自身使用的是就是独立域名 ymig.com 来作为 cookie-free domains 的,YouTube 使用的是 ytimg.com 独立域名。
现在注册一个域名也很便宜的,godaddy 域名以.com .info .org .net 后缀的域名第一年购买都很便宜,第二年续费比较贵,这时候第二年可以再换一个新的。其他一些域名注册商也差不多这样。
WordPress 博客 cookie-free domains 设置
在 WordPress 博客中,针对使用带 www 域名作为网站主域名,其他二级域名作为 cookie-free domains 的情况,还要再另外设置 Cookie 的作用域就可以了。打开 wp-config.php 文件,设置 COOKIE_DOMAIN:
<php? define('COOKIE_DOMAIN', 'www.farlee.info'); ?> |
所谓的 COOKIE_DOMAIN,就是 cookie-free domains 相反的意思。看看 WordPress 对 Set Cookie Domain 的介绍:
为 WordPress 设置的 COOKIES Domain 可以进行一些特殊情况下的域名设置。比如使用二级域名存放静态内容。为了阻止 WordPress Cookies 在对每一个二级域名上的静态内容请求时被传送,我们可以只设置非静态域名为 cookie domian 。
The domain set in the cookies for WordPress can be specified for those with unusual domain setups. One reason is if subdomains are used to serve static content. To prevent WordPress cookies from being sent with each request to static content on your subdomain you can set the cookie domain to your non-static domain only. |
设置 COOKIE_DOMAIN 就可以指定哪个二级域名需要传送 cookies,其他的域名不发送 cookies 。所以如果我们的网站主域名用的是顶级域名,COOKIE_DOMAIN 就必须设置为顶级域名 farlee.info 了,而顶级域名的设置会映射到各个子域名,所以即使另外添加二级域名作为 cookie-free domains 也无效了。这时只能另外注册一个独立的顶级域名。
下面以独立域名 farleeimg.info , 为例演示 WordPress 博客 (farlee.info)cookie-free domains 设置步骤:
1. 图片用单独的 cookie-free 域名储存
首先进入 farlee.info 网站空间控制面板新增绑定域名:farleeimg.info 。
然后进入 WordPress 管理后台设置:控制面板--设置--杂项--文件的完整 URL 地址填写 http://farleeimg.info/,设置如下图:
在发表文章时上传图片,前台显示的图片域名地址就是 cookie-free domains(farleeimg.info) 了。
如果是使用图床 (可以上传图片,然后获得图片链接地址的网站空间) 就更简单了,将图片上传到图片空间的网站服务器,发表文章的时候将图片链接地址取过来即可。
2. WordPress CSS 文件、 JS 文件设置独立域名储存
和图片一样,把 CSS 和 JS 上传到绑定 cookie-free 域名的空间,取链接 URL 地址。然后在 WordPress 主题文件里修改 CSS 和 JS 的 url 。
3. WordPress 表情图片
方法同上,上传后修改 wp-includes/formatting.php 文件。将
$srcurl = apply_filters('smilies_src', "$siteurl/wp-includes/images/smilies/$img", $img, $siteurl); |
将红色部分改为上传到 cookie-free domains 的网站空间的表情图片的 URL 链接地址。
另外 YSlow 关于 Cookies 的另外一个网站速度提升建议,Cookie 信息在网站服务器和浏览器之间传送的 HTTP headers 中交换,因此要尽量缩小 cookie 大小,单个 cookie 不要超过 4K 。