3

根据 Disqus注释代码说明,您应该按如下方式包含他们的 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 是一家相当大且成熟的公司,所以我假设这是他们有意识和有目的的决定。他们为什么走这条路?

4

1 回答 1

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 分钟内到达每个客户端。

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

于 2012-04-11T00:17:51.250 回答