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

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

我正在使用“页面速度“扩展萤火虫尝试优化网站,我目前正在研究以下建议:“从无 Cookie 的域提供静态内容“。

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

我之所以问这个问题,是因为在我尝试修复它之后,“Page Speed”仍然显示相同的建议 - 所以我猜一定是一些 cookies 漏掉了。我在浏览器 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 吗?

答案1

您提到的 cookie 由 Google Analytics 设置,它们通常在域范围内设置以覆盖所有子域。

Nginx 无法让浏览器不发送任何 cookie,HTTP 规范中没有允许 Web 服务器表示对 cookie 不感兴趣,因此浏览器将始终发送 cookie。许多最大的网站实际上都使用完全独立的域来存储静态文件 - 例如 yahoo 的 yimg.com。

答案2

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

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

_gaq.push(
    ['_setAccount', 'UA-xxxxxxx-1'],
    ['_setDomainName', 'www.example.com'],
    ['_trackPageview']
);

相关内容