如何在IIS6中遵守“从无cookie域提供静态内容”的页面速度规则?

16

如何在IIS6中遵循“从无Cookie的域名提供静态内容”页面速度规则?

3个回答

19

在IIS6/IIS7/IIS7.5中创建一个无cookie的网站(或子域名,这是一种非常常见的最佳实践)很简单:你需要告诉网站不使用cookie :) 这意味着在IIS术语中,不使用会话.

在IIS6/IIS7中,有两种方法可以实现这一点。

  1. 修改Web.config文件(我个人推荐)
  2. 使用IIS管理器GUI查找设置并更改它。

重要提示

在进行任何测试之前,您一定一定一定清除所有Cookie(或清除正在测试的域的所有Cookie),否则即使您采取了所有步骤,它们也会被传递。

1. 通过配置文件

您需要将会话状态定义为关闭

<system.web>
        <sessionState cookieName="What_ever" mode="Off" />
</system.web>
注意:请注意,cookieless属性(true|false)并不意味着“发送cookie/不发送cookie”。这是用于使用带有/不带有cookie的会话...并且如果设置为true,则将某些cookie guid传递到URL中。

2. 通过GUI界面

alt text

alt text

希望这有所帮助(我假设您知道如何测试是否启用了cookie或未启用cookie...)


非常感谢,我将创建一个新的Web应用程序来实现这个。 - Christophe Debove
两个答案都是正确的,但我猜你比Sam152更投入,这就是为什么我认可你的答案。谢谢大家。 - Christophe Debove
这听起来不太对。将sessionState模式设置为off并不能关闭cookies。您仍然可以在启用该设置的网页上设置cookies。我们已经在生产环境中这样做了相当长的时间。 - Barka
关闭 == 未启用。为了真正测试此设置,请确保通过隐身/私密浏览连接到网站,以便在第一次请求时不发送任何 cookie。 - Pure.Krome
@Pure.Krome,你在大多数图片中都遮盖了网站名称,但右侧窗格的标题没有。虽然这是3年前发布的帖子,但我想你可能想知道。 - Ash Clarke
Ta - 已修复。你能否现在删除你的评论,以免暗示 SO 历史更改... - Pure.Krome

8
这意味着您的内容需要来自没有cookie的域。 StackOverflow.com是这样一个网站的例子。您会注意到所有SO的静态内容都来自一个名为sstatic.net的域。
http://sstatic.net/stackoverflow/all.css
http://sstatic.net/js/master.js

这样做是为了避免客户端和服务器浪费资源来解析和处理cookie数据。好消息是,你可以使用子域,只要正确设置cookie路径即可。
雅虎网站加速最佳实践
使用无cookie的域名来请求组件
当浏览器请求静态图像并发送cookie时,服务器不需要这些cookie。因此,它们只会无谓地创建网络流量。您应该确保使用无cookie请求请求静态组件。创建一个子域并将所有静态组件托管在那里。如果您的域名是www.example.org,则可以在static.example.org上托管您的静态组件。但是,如果您已经在顶级域example.org而不是www.example.org上设置了cookie,则所有对static.example.org的请求都将包含这些cookie。在这种情况下,您可以购买一个全新的域名,在那里托管您的静态组件,并使该域名无cookie。雅虎使用yimg.com,YouTube使用ytimg.com,亚马逊使用images-amazon.com等等。
在无cookie的域上托管静态组件的另一个好处是,一些代理可能会拒绝缓存使用cookie请求的组件。另外,如果您想知道是否应该将example.org或www.example.org用作主页,请考虑cookie的影响。省略www将使您别无选择,只能将cookie写入*.example.org,因此出于性能原因,最好使用www子域并将cookie写入该子域。

如果您的 Web 应用程序需要 Cookies,则禁用它们并不是一个好主意;如果不需要,那么也不会设置任何 Cookies,因此这一步骤对您无效。 - Sam Becker
@Christophe Debove - 我已经添加了一个新的答案,帮助您完成在IIS中创建无cookie网站的步骤。 - Pure.Krome
@Christophe,你不需要设置任何东西来实现“无cookie”,浏览器会自动处理这个问题。当你向位于“其他域”的组件发出请求时,出于某些“安全”原因,浏览器不会在请求中发送任何cookie,因此你的请求就变成了“无cookie”。 - Zain Shaikh
是的,当然谢谢你。这是隐含的而不是明确的,这就是我有点困惑的原因。 - Christophe Debove
@Zain Shaikh:您能详细解释一下您的评论吗?因为我不明白您的意思,基于我的答案,它与您的评论不符。我的回答针对服务器配置。您是指客户端配置(这与您的评论相符->不需要浏览器设置,但您可以调整浏览器以永远不接受cookie)。然而,问题是针对服务器配置的。 - Pure.Krome
好的,我对cookie的过程有点困惑,我明白如果域名不同,那么cookie不会被发送,就像我在页面顶部的评论中所说,两个问题都是有效的,这就是为什么我投票支持这两个问题,但我也希望了解IIS的配置,即使我知道在我的情况下这不是必要的。谢谢你。 - Christophe Debove

1
创建子域名(例如static.example.com),并将所有静态内容(图像、CSS、JS)存储在此处。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接