如何使用无 cookie 域设置 IIS 以提高性能?

Posted

技术标签:

【中文标题】如何使用无 cookie 域设置 IIS 以提高性能?【英文标题】:How do I setup IIS with a cookieless domain to improve performance? 【发布时间】:2010-10-31 16:25:44 【问题描述】:

我在 google 的文档中阅读了他们的新 pagespeed 插件,他们建议使用 cookieless domains 来提高性能:

静态内容,例如图片、JS 和 CSS 文件,不需要伴随 cookie,因为这些资源没有用户交互。您可以通过从不提供 cookie 的域提供静态资源来减少请求延迟。

有人知道如何在 IIS 中执行此操作吗?

【问题讨论】:

serverfault.com 可能会为您带来更多结果 关于 SO 的 IIS 相关问题很多,所以我觉得比较合适(包括你的一个:***.com/questions/321939/…) 这是一个与 SO 开发相关的问题。 【参考方案1】:

Google 文章的建议是,您从另一个域提供所有静态内容,而该服务域最初未设置 cookie。

Cookie 以两种方式设置 - 通过会话 cookie(例如通过 ASP 或 ASP.NET 请求)或由您的应用程序显式设置。

这些将在对设置 cookie 的域的每个后续请求(无论请求是针对静态内容还是动态内容)时发回服务器,从而增加请求负载。

通过使用第二个域来提供静态内容(html、CSS、图像等),您所做的是发出无 cookie 请求,因为首先不会为该域设置初始 cookie。

在 IIS 中,您的应用程序、ISAPI 过滤器或 ISAPI 扩展会添加 cookie。如果您的 IIS 服务器没有拦截对静态内容的请求(因为这通常由内核模式 http.sys 驱动程序处理),则不会将 cookie 添加到响应中。 cookie 只会在请求管道的更深处发挥作用。

所以基本上没有办法在 IIS 中显式配置无 cookie 域。

【讨论】:

【参考方案2】:

如果您只是将所有静态资源放入例如 static.mysite.com 中,并且如果您从未在该域中设置任何 cookie,则浏览器在从您的静态域中检索资源时将永远不会发送 cookie。

Google 就是这么说的。无需配置,只需整理即可。

【讨论】:

是的,但消除这一点是否足以弥补增加的 dns 查找?如果您的页面包含来自多个域的 dns 内容(即使它是您自己的子域之一),这是否需要 2 次 dns 查找?【参考方案3】:

AFAIK google analytics 为所有子域设置 cookie,所以如果您使用分析,它会无用吗?

【讨论】:

Google Analytics 应该如何知道子域? @olaf,它没有,它只是假设它下面的所有内容,例如*.mydomain.com【参考方案4】:

AFAIK google analytics 为所有子域设置 cookie,所以如果您使用分析,它会无用吗?

我也遇到过这种情况,您必须完全使用不同的域以避免设置分析/adsense cookie。使用 static.yourdomain.com 不会削减它。

希望 Google 更改他们的分析 cookie,这样我们就不必购买新域来提供无 cookie 的内容。

【讨论】:

【参考方案5】:

以下是使用 Google Analytics(分析)异步跟踪代码的示例,说明如何设置域进行跟踪: _gaq.push(['_setAccount', 'UA-XXXXXXX-x'],['_setDomainName', 'www.example.com'],['_trackPageview']);

以下是使用旧版跟踪代码的示例:

var pageTracker = _gat._getTracker("UA-XXXXXXX-x"); pageTracker._setDomainName("www.example.com"); pageTracker._trackPageview();

以下是 Google 对此的评价:Google Analytics & Cookies

【讨论】:

以上是关于如何使用无 cookie 域设置 IIS 以提高性能?的主要内容,如果未能解决你的问题,请参考以下文章

对于静态域文件,仍然附加 cookie。怎么解决? ASP.NET , IIS 10

在与一个 IIS 应用程序连接的两个域之间共享 OWIN 身份验证 Cookie

.htaccess、YSlow 和“使用无 cookie 域”

跨域 img 设置 cookie

Cookie 路径及其对子文件夹页面的可访问性

cookie在多域名下的跨域解决办法