Nginx-从无cookie的域提供静态内容


11

我正在使用Firebug的“ 页面速度 ”扩展程序来尝试优化网站,目前正在研究以下建议:“ 从无cookie的域提供静态内容 ”。

我已经为某些内容创建了一个单独的子域,以便拥有www.example.comimages.example.com但是如何指定它images.example.com是无cookie的呢?我是否可以强制要求它在诸如Nginx或Apache之类的Web服务器中是无cookie的,或者仅仅是确保不在服务器端代码(例如PHP)的该域中设置任何cookie的问题?

我问这个问题的原因是,即使我尝试修复它后,“ Page Speed”仍然显示相同的建议-所以我想某些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吗?

Answers:


11

您提到的Cookie是由Google Analytics(分析)设置的,它们通常是在整个域范围内设置的,以覆盖所有子域。

Nginx无法使浏览器不发送任何cookie,HTTP规范的一部分没有允许Web服务器说它对cookie不感兴趣,因此浏览器将始终发送它们。这个建议实际上很重要的许多最大的站点都使用完全独立的域来存储静态文件,例如yimg.com(用于yahoo)。


谢谢马丁,这很有意义,对我非常有用:-)
汤姆(Tom)2010年

14

这是一篇有用的文章,也介绍了如何使用无cookie 域:http ://www.ravelrumba.com/blog/static-cookieless-domain/ 。

为了设置无cookie的子域,您必须确保您的服务器或应用程序仅为www.example.com设置cookie,而不为顶级example.com设置cookie。(在顶级域设置的Cookie也适用于所有子域。)当然,您如何进行此操作取决于您的特定设置。但是,两个常见的Cookie设置者是Google Analytics(分析)和WordPress。对于Google Analytics(分析),您必须为www域设置“ _setDomainName”值。像这样:

_gaq.push(
    ['_setAccount', 'UA-xxxxxxx-1'],
    ['_setDomainName', 'www.example.com'],
    ['_trackPageview']
);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.