2010-12-14 76 views

回答

18

首先說一下cookie的域的概念了一下。通常,當通過http請求任何內容時,任何相關的cookie都會隨請求一起發送。 Cookie,取決於他們來自哪個域。使用無Cookie域的想法是,您將靜態內容(不包括cookie)(如圖像)重新定位到單獨的域,以便不會隨該請求一起發送Cookie。這會削減少量流量。

你做這個多少錢增益取決於頁的類型。你擁有的圖像越多,獲得的收益就越多。如果您的網站加載了大量小圖片,例如頭像或圖片縮略圖,那麼您可能會獲得很多收穫。相反,如果你的網站沒有使用任何cookies,你沒有任何收穫。如果頁面只使用少量圖片,那麼無論如何都會在頁面加載之間進行緩存,所以頁面加載速度可能會明顯加快。

有一點要記住,也就是爲example.com設置cookie也將與請求s1.example.com爲「s1.」是一個子域example.com發送。您需要使用www.(或您選擇的任何其他子域)來分隔cookie空間。

其次,如果您認爲無Cookie的域名實際上是值得嘗試的東西,那就讓我們來談談實現。

Shikhar的解決方案是!雖然該解決方案似乎在表面上起作用,但實際上卻違背了使用無Cookie域的目的。對於每張圖片,首先嚐試s1.網址。然後,s1.網址將重定向到觸發第二個http請求的www.域。無論你如何看待,這都是一種損失。你需要的是一個重寫,它改變了網絡服務器內部的URL,甚至沒有實現瀏覽器。

爲了簡單起見,我假定所有域指向相同的目錄,以便www.example.com/something = example.com/something = s1.example.com/something = blub.example.com/something。如果您確實需要將圖像物理存儲在「www.example.com/images」中,這使事情變得更簡單。

我推薦一個的.htaccess,看起來有點像這樣:

# Turn on rewrites 
RewriteEngine On 

# Rewrite all requests for images from s1, so they are fetched from the right place 
RewriteCond %{HTTP_HOST} ^s1\.example\.com 
# Prevent an endless loop from ever happening 
RewriteCond %{REQUEST_URI} !^/images 
RewriteRule (.+) /images/$1 [L] 

# Redirect http://s1.example.com/ to the main page (in case a user tries it) 
RewriteCond %{HTTP_HOST} ^s1\.example\.com 
RewriteRule ^$ http://www.example.com/ [R=301,L] 

# Redirect all requests with other subdomains, or without a subdomain to www. 
# Eg, blub.example.com/something -> www.example.com/something 
#  example.com/something  -> www.example.com/something 
RewriteCond %{HTTP_HOST} !^www\.example\.com 
RewriteCond %{HTTP_HOST} !^s1\.example\.com 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

# Place any additional rewrites below. 
+0

+1對於這樣的這樣的洞察滿答案nitro2k01!通過讓我簡單地說服我繞過整個無cookie的故事,你爲我節省了幾個小時的修復工作。我的網站只使用10個圖像,這是不值得的重定向子域上的整個東西。雖然在這個話題上,你會知道,如果按照seo排名,它更好地使用yellowhorse.domain.com或domain.com/yellowhorse? – Sam 2011-02-24 18:39:13

1

如果你的意思是來自www.example.com的流量重定向到s1.example.com,使用下面的htaccess在www.example.com

RewriteCond %{HTTP_HOST} ^(s1\.example\.com)
RewriteRule (.*) http://www.example.com%{REQUEST_URI}[R=301,NC,L]

如果這不是您正在尋找的內容,請進一步詳細說明問題。

1

只是爲了人民的誰像我一樣,可以研究這樣的好處一般信息。從我正在閱讀的內容來看,它不僅減少了消除使用http請求發送cookie的上游開銷。很顯然,許多瀏覽器將最多可連接1個域/服務器的連接限制爲6個併發。所以如果你在diff服務器上有一個單獨的域名,你可以把它加倍到12個。對我來說,對於我來說這對於一個嚴重的速度提升來說似乎是主要的潛力。

雖然無論如何,如果我正確地理解這一點。提供靜態內容的其他域需要位於主域的另一臺服務器上。其實有道理,狂熱的Firefox用戶和調教者。當您在firefox中檢查about:config設置時,默認情況下,每個服務器的最大連接數設置爲6。一個人可以手動撞它高達8一個最大但大部分Firefox用戶可能不花足夠的時間來熟悉如何修改瀏覽器,並把它留給6.

不知道有多少默認最高其他瀏覽器默認設置,然後有更舊的瀏覽器版本仍在使用中考慮。底線......使瀏覽器使用兩臺服務器的連接總數增加一倍是非常有意義的,因此必須提高加載時間。在同一臺服務器上使用子域名時,一個人無法利用該域名。

0

我認爲你可能有它向後(或者很可能我做的)。爲了澄清,如果你至少在這種情況下實施cookie的子域&有www.基本URL,cookie被設置www,例如:主要有餅乾二傳手是谷歌分析,就這麼設置的腳本時,我網站它看起來像這樣:

var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'analytics-acc-#], 
['_setDomainName', '[www.valpocreative.com][1]'], 
['_trackPageview']); 

你可以在這裏看到,我把我的主域www,糾正我,如果我錯了我的情況,我需要www重定向到非WWW子域名&不是其他方式。這也是cname安裝在我的cpanelcname= "cdn"指向www.domain.com