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 。