Nginx - 提供來自無 cookie 域的靜態內容
我正在使用Firebug的“頁面速度”擴展來嘗試優化網站,我目前正在研究以下建議:“提供來自無 cookie 域的靜態內容”。
我已經為某些內容創建了一個單獨的子域,這樣我就有了
www.example.com
,images.example.com
但是我如何指定它images.example.com
是無 cookie 的?我可以強制它在 Nginx 或 Apache 等網路伺服器中是無 cookie 的,還是只是確保不在伺服器端程式碼(例如 PHP)中在此域中設置任何 cookie 的問題?我問的原因是因為“頁面速度”即使在我嘗試修復它之後仍然顯示相同的建議 - 所以我猜一些 cookie 一定是漏掉了。我在瀏覽器 cookie 搜尋中看不到任何 cookie,但如果我檢查資源的 HTTP 標頭,我可以看到:
Cookie __utma=73051794.676740941.1271792323.1277710025.1277900715.20; __utmz=73051794.1271792323.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmx=73051794.00009825591030858779:3:0; __utmxx=73051794.00009825591030858779:2295429:2592000; __gads=ID=0a768e3407302ff8:T=1272608001:S=ALNI_MZ-GKhg3ETniU0TVftk0DdGyUypkQ
任何人都知道如何阻止來自我的子域的 cookie?
您提到的 cookie 是由 Google Analytics 設置的,它們通常是在域範圍內設置的,以覆蓋所有子域。
Nginx 不能讓瀏覽器不發送任何 cookie,HTTP 規範中沒有部分允許 Web 伺服器說它對 cookie 不感興趣,因此瀏覽器將始終發送它們。這個建議實際上很重要的許多最大的站點都使用一個完全獨立的靜態文件域——例如 yahoo 的 yimg.com。
這是一篇有用的文章,它還介紹瞭如何使用無 cookie子域:http ://www.ravelrumba.com/blog/static-cookieless-domain/ 。
為了設置無 cookie 子域,您必須確保您的伺服器或應用程序只為 www.example.com 而不是頂級 example.com 設置 cookie。(在頂級域中設置的 Cookie 也適用於所有子域。)當然,您如何處理這取決於您的特定設置。但是兩個常見的 cookie 設置器是 Google Analytics 和 WordPress。對於 Google Analytics,您必須將“
_setDomainName
”值設置為您的www域。像這樣:_gaq.push( ['_setAccount', 'UA-xxxxxxx-1'], ['_setDomainName', 'www.example.com'], ['_trackPageview'] );