为什么要将您的Javascript文件移动到您也拥有的其他主域?

Tim*_*ley 27 javascript webserver cdn whitelist provisioning

我注意到,就在去年左右,许多主要网站对其网页结构的方式也做了同样的改变.每个人都将他们的Javascript文件从与页面本身(或其子域)相同的域托管到托管在不同命名的域上.

它不仅仅是并行化

现在,有一种众所周知的技术可以跨多个域传播页面组件以并行化下载. 雅虎推荐它和许多其他人一样.例如,www.example.com是您托管HTML的地方,然后您将图像放在images.example.comscripts.example.com上的javascripts上.这解决了这样一个事实,即大多数浏览器限制每台服务器的同时连接数,以便成为优秀的网民.

以上不是我所说的.

它不仅仅是重定向到内容交付网络(或者可能是 - 请参阅问题的底部)

我所说的是专门在一个完全不同的域上托管Javascripts.让我具体一点.就在去年左右,我注意到了:

youtube.com已将其.JS文件移至ytimg.com

cnn.com已将其.JS文件移至cdn.turner.com

weather.com已将其.JS文件移至j.imwx.com

现在,我了解像Akamai这样专门为大型网站外包的内容交付网络.(特纳的特殊领域中的名称"cdn"在这里提醒我们这个概念的重要性).

但请注意,通过这些示例,每个站点都有自己专门为此目的注册的域,而不是内容交付网络或其他基础架构提供商的域.实际上,如果您尝试从大多数这些脚本域中加载主页,它们通常会重定向回公司的主域.如果您反向查找所涉及的IP,它们有时会出现在CDN公司的服务器上,有时则不然.

我为什么在意?

以前在两家不同的安全公司工作过,我已经变得偏执了恶意的Javascripts.

因此,我遵循白名单网站的做法,我将允许Javascript(以及其他活动内容,如Java)运行.因此,为了使像cnn.com这样的网站正常工作,我必须手动将cnn.com放入列表中.这是后面的痛苦,但我更喜欢它.

当人们使用诸如scripts.cnn.com之类的东西进行并行化时,通过适当的通配符可以很好地工作.当人们使用CDN公司域名下的子域名时,我可以在前面允许CDN公司的主域名使用通配符,并且一举杀死许多鸟类(例如*.edgesuite.net和*.akamai.com).

现在我发现(截至2008年)这还不够.现在我必须在我想要列入白名单的页面的源代码中查找,并找出该站点用于存储其Javascripts的"秘密"域(或域).在某些情况下,我发现我必须允许三个不同的域来使网站工作.

为什么所有这些主要网站都开始这样做?

编辑:好的,因为"onebyone"指出,它确实似乎与CDN内容的传递有关.所以让我根据他的研究略微修改这个问题......

为什么weather.com使用j.imwx.com而不是twc.vo.llnwd.net

为什么youtube.com使用s.ytimg.com而不是static.cache.l.google.com

这背后有一个推理.

joe*_*rdi 40

您的后续问题基本上是:假设一个受欢迎的网站使用CDN,为什么他们会使用自己的TLD,如imwx.com而不是子域名(static.weather.com)或CDN的域名?

好吧,使用他们控制的域名与CDN域名的原因是他们保留了控制权 - 他们甚至可能完全改变CDN,只需更改DNS记录,而不必更新1000页面/应用程序中的链接.

那么,为什么要使用废话域名呢?好吧,像.js和.css这样的辅助文件很重要的一点是,你希望它们尽可能地被代理和人们的浏览器缓存到下游.如果一个人点击gmail.com并且所有.js都是从​​他们的浏览器缓存中加载的,那么该网站对他们来说似乎更加快捷,并且它还节省了服务器端的带宽(每个人都获胜).问题是,一旦你发送HTTP标头用于真正积极的缓存(即缓存我一周或一年或永远),这些文件不再可靠地从服务器加载,你不能进行更改/修复因为事情会在人们的浏览器中破裂.

因此,公司必须做的是暂存这些更改并实际更改所有这些文件的URL以强制用户的浏览器重新加载它们.骑自行车通过"a.imwx.com","b.imwx.com"等领域是如何完成的.

通过使用无意义的域名,Javascript开发人员和他们的Javascript系统管理员/ CDN联络人可以拥有他们自己的域名/ DNS,他们正在推动这些更改,他们是负责任/自主的.

然后,如果在TLD上发生任何类型的cookie阻塞或脚本阻塞,他们只需从一个无意义的TLD更改为kyxmlek.com或其他任何内容.他们不必担心在*.google.com的所有内容中意外地做一些具有对策副作用的邪恶事件.


小智 6

限制cookie流量?

在特定域上设置cookie后,对该域的每个请求都会将cookie发送回服务器.每一个要求!

这可以很快加起来.

  • 正确设置 cookie 域不能解决这个问题吗?即,如果您将 cookie 绑定到 www.cnn.com(而不是 cnn.com),那么它不会被发送到 scripts.cnn.com。 (2认同)

lou*_*dej 5

原因很多:

CDN - 不同的 DNS 名称可以更轻松地将静态资产转移到内容分发网络

并行性 - 图像、样式表和静态 javascript 使用另外两个连接,这些连接不会阻止其他请求,例如 ajax 回调或动态图像

Cookie 流量 - 完全正确 - 特别是对于那些习惯在 Cookie 中存储的不仅仅是简单会话 ID 的网站

负载调整 - 即使没有 CDN,仍然有充分的理由将静态资产托管在经过优化的较少 Web 服务器上,以极快地响应大量文件 URL 请求,而网站的其余部分则托管在大量响应服务器上更多处理器密集型动态请求


更新 - 您不使用 CDN 的 dns 名称的两个原因。客户端 dns 名称充当 CDN 正在缓存的资产的正确“配置单元”的关键。此外,由于您的 CDN 是一项商品服务,您可以通过更改 dns 记录来更改提供商 - 这样您就可以避免站点上的任何页面更改、重新配置或重新部署。