![Nginx - 从无 Cookie 的域提供静态内容](https://linux22.com/image/518810/Nginx%20-%20%E4%BB%8E%E6%97%A0%20Cookie%20%E7%9A%84%E5%9F%9F%E6%8F%90%E4%BE%9B%E9%9D%99%E6%80%81%E5%86%85%E5%AE%B9.png)
我正在使用“页面速度“扩展萤火虫尝试优化网站,我目前正在研究以下建议:“从无 Cookie 的域提供静态内容“。
我已经为某些内容创建了单独的子域,以便我拥有www.example.com
,images.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']
);