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 。