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

Tom*_*Tom 11 http nginx cookies static-content cookieless

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

我为某些内容创建了一个单独的子域,以便我拥有www.example.comimages.example.com但如何指定它images.example.com是无 cookie 的?我可以强制它在诸如 Nginx 或 Apache 之类的网络服务器中是无 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
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何阻止来自我的子域的 cookie?

Tom*_*Tom 14

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

为了设置 cookieless 子域,您必须确保您的服务器或应用程序只为 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']
);
Run Code Online (Sandbox Code Playgroud)


Mar*_*ald 11

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

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