为什么要在子域中插入静态文件(CSS,图像,JavaScript,ECC)?


29

为什么这么多大小的网站都在诸如media.example.com或的子域中插入静态文件(CSS,图像,JavaScript,ECC)s2.static.example.com

有什么优势?为什么不只是一个目录example.com/media/

Answers:


24

我看到至少三个可能的(良好)原因:

  • 使用另一台机器投放静态内容
    • 包括一些CDN
  • 使用其他Web服务器提供静态内容
    • 更轻便,更快的东西
    • 无需完整的PHP / .NET / JAVA服务器即可提供静态内容!
  • 使用其他域名意味着您将没有主域名上使用的cookie

如果我没记错的话,那就是在StackOverflow上完成的工作


15

我认为,主要原因是使用Cookie。

Cookies将随每个请求一起发送,假设您有2kb Cookie数据并在页面上加载20张图像。

那是额外的40kb数据,再乘以一个月的页面浏览量,您可能会惊讶于无用的东西中损失了多少带宽,并且带宽不是免费的...

同样,在顶级域上设置的cookie会通过对任何子域的所有请求发送,在这种情况下,甚至建议在没有cookie的域中购买一个新域来托管静态组件。

例如,StackOverflow使用sstatic.net,Yahoo使用yimg.com,YouTube使用ytimg.com,Amazon使用images-amazon.com等。

看看这个:


8

要补充上面的一些答案:某些Web浏览器只能同时从任何域下载两个文件。

从不同的主机名称提供静态内容(或名称-例如a.domainb.domainc.domain)使这些老版本浏览器并行下载多个文件。


2

...对组件使用无cookie域。

当浏览器发出静态图像请求并与请求一起发送cookie时,服务器对这些cookie没有任何用处。因此,它们只会无缘无故地创建网络流量。您应确保使用无Cookie的请求来请求静态组件。创建一个子域并在其中托管所有静态组件。

该建议摘自Yahoo的“加速网站最佳实践”


0

仅仅因为您的http请求将变小并且服务器将运行很快,并且所请求的文件将在非常短的时间内给出,最终将导致最快的页面加载


这不会添加其他答案未说的任何内容。您甚至都没有说为什么请求量较小(因为没有cookie),因此这个答案比其他答案差。
斯蒂芬·奥斯特米勒
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.