非 www 域名会阻止在同一域名上托管静态内容,对吗?

非 www 域名会阻止在同一域名上托管静态内容,对吗?

使用非 www 域名有缺陷吗?

我喜欢简短、干净的 URL,例如 example.com 而不是 www.example.com,而且无论使用哪个 URL,都应该重定向到另一个 URL。但是,随着我对这个问题的研究,我得出的结论是,如果要在单独的域上托管静态内容而不增加使用 Cookie 的传输大小,则使用非 www URL 作为规范 URL 是一种负担。

非 www 域名与所有子域名共享其 cookie

换句话说,如果http://example.com是您的规范网址,那么它很可能包含 Cookie。由于 Cookie 的设置方式,这些 Cookie 将与所有子域共享,例如 users.example.com、dev.example.com、www.example.com,最重要的是 images.example.com 或 files.example.com。

因此,如果您想从单独的子域提供静态文件内容,您最终会将主站点的 cookie 与它们捆绑在一起,并增加 http 请求的传输大小。

在这种情况下,为了防止传递带有静态内容的 cookie,您需要购买完全独立的 url(例如 examplefiles.com)。

www 域名将其 cookie 分隔开来

相反,如果您将 www.example.com 设置为规范网址,我相信该 cookie 仅适用于该 www. 网站,而不适用于任何其他子域。在这种情况下,您无需购买和维护第二个网址以避免使用静态内容提供 cookie,只需确保 files.example.com 或 images.example.com 或类似网站配置为不提供 cookie。

有什么减轻处罚的因素吗?

这个分析正确吗?这个问题是否以这种虽小但可能很重要的方式,利用简短的非 www 网址作为规范网址,而这是否稍微不符合未来发展?我是否遗漏了其他缓解因素,例如确保仅为规范的非 www 短网址设置 cookie 的方法?

答案1

我并不认为这有什么问题,因为 cookie 并不大,服务器不必在响应中将其发回。因此,虽然 example.com 设置的一个或多个 cookie 会将请求“膨胀”到 static.example.com,但 static.example.com 不必在响应中将其发回,因此服务器的响应完全不受影响。

此外,如果您知道内容是静态的(图像、CSS、JS 等),则应设置适当的缓存控制标头,尤其是针对未来某个适当时间的 Expires 标头(例如 +1 天、+1 周、+50 年,无论什么时间,只要与静态内容更改频率相关即可)。完成此操作后,这些 cookie 将仅发送一次,然后浏览器的缓存将处理这些文件的未来需求。

如果您仍然觉得这太过分(老实说,我真的不知道怎么会这样),您可以通过使用路径来缓解这种情况。例如,如果您的 Web 应用只需要 example.com/app 上的 Cookie,请将 Cookie 路径设置为 /app,然后对 static.example.com/images/some-awesome-image.jpg 的请求将不会发送该 Cookie,因为路径不匹配。

您可以通过减少使用的 cookie 数量来进一步缓解这种情况 - 对于大多数目的来说,一个(且只有一个)存储单个会话 ID 的 cookie 只会增加几个字节(在我见过/使用过的每个实现中都少于 1KB),并为服务器提供足够的信息来查找有关客户端服务器端需要了解的所有信息。

老实说,如果您担心短 URL 域名会因为 Cookie 而使您的网站无法适应未来发展,那么我认为您的架构存在问题,即 Cookie 太多/太大,您应该从这个角度重新评估您的策略。

答案2

是的,你的分析是正确的。当然,你总是可以花上 10 美元/年购买一个单独的域名,并使用你想使用的任何规范域名。

相关内容