为什么Disqus不使用全局CDN作为评论代码?

时间:2012-04-10 22:25:50

标签: javascript cdn disqus

根据Disqus comment code instructions,你应该按如下方式包含他们的JavaScript:

(function () {
  var s = document.createElement('script');
  s.async = true;
  s.type = 'text/javascript';
  s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
  (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());

JavaScript的位置基于特定于您网站的短名称。为什么Disqus会这样做而不是为他们的JavaScript使用一个全局位置(例如cdn.disqus.com/count.js)。如果每个站点的JavaScript都相同,那么要求每个人为他们访问的每个支持Disqus的域重新下载JavaScript似乎很愚蠢。如果JavaScript基于短名称不同,为什么不使用在加载全局js之前设置的短名称变量?

Disqus是一家相当庞大而成熟的公司,所以我认为这是他们有意识和有目的的决定。为什么他们走这条路?

1 个答案:

答案 0 :(得分:8)

实际上他们正在使用CDN来传递count.js

如果<shortname>存在

http://<shortname>.disqus.com/count.js重定向到类似

的内容

http://mediacdn.disqus.com/1334018047/build/system/count.js

减少流量count.js(在CDN上)随附一个Expires-Header,允许将其缓存一个月。

但是想象一下,他们需要更改代码或阻止某些网站或向其他网站提供特殊功能,这需要一个月的时间才能让所有客户端获得更改。为了减少这个时间跨度,他们可能会使用此重定向(最多只能缓存10分钟),因此代码/功能更改将在10分钟内到达每个客户端。

它为他们提供了很大的灵活性,并且不需要用户更改包含代码。