问题标签 [cdn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
6821 浏览

javascript - 为什么将您的 Javascript 文件移动到您也拥有的不同主域?

我注意到,就在去年左右,许多主要网站都对其页面结构进行了相同的更改。每个人都将他们的 Javascript 文件从托管在与页面本身(或其子域)相同的域上移至托管在不同名称的域上。

这不仅仅是并行化

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

以上不是我要说的。

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

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

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

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

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

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

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

我为什么在乎?

以前在两家不同的安全公司工作过,我对恶意 Javascript 感到偏执。

因此,我遵循将允许 Javascript(和其他活动内容,如 Java)在其上运行的站点列入白名单的做法。因此,要使cnn.com这样的网站正常运行,我必须手动将cnn.com放入列表中。这是背后的痛苦,但我更喜欢它而不是替代方案。

当人们使用像scripts.cnn.com这样的东西来并行化时,使用适当的通配符可以很好地工作。当人们使用 CDN 公司域之外的子域时,我可以只允许 CDN 公司的主域在前面加上一个通配符,然后用一块石头杀死许多鸟(例如 *.edgesuite.net 和 *.akamai.com)。

现在我发现(截至 2008 年)这还不够。现在我必须在我想列入白名单的页面的源代码中四处寻找,并找出该站点用于存储其 Javascript 的“秘密”域(或域)。在某些情况下,我发现我必须允许三个不同的域才能使站点正常工作。

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

编辑:好的,正如“onebyone”所指出的,它似乎与内容的 CDN 交付有关。所以让我根据他的研究稍微修改一下这个问题......

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

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

这背后一定有道理。

0 投票
2 回答
1169 浏览

javascript - 我在哪里可以找到免费的内容托管?

是否有免费的 Javascript 托管服务?最近 google 一直在托管 jQuery 等……而 Yahoo 托管的是 YUI,这很棒,但如果有可以托管用户脚本之类的服务会更好。

有任何想法吗?

0 投票
1 回答
954 浏览

java - 如何在生产中引用来自不同子域(或 CDN)的资产?

我在 Ruby 和 Java 领域工作。我受到了merb-assets项目的启发,该项目提供了各种功能,可以轻松引用位于子域(或 CDN)上的资产(图像、CSS 等)。

我想在 Java 中做同样的事情:

  • 开发和测试中,我想使用 JSTL<c:url>或 Struts 2 的<s:url value=""/>标签来引用资产。
  • 但在生产中,我想将这些资产中的大部分移到一个单独的子域(或 CDN)中。

是否有任何标记库(或其他方法)可以帮助解决这个问题?每次我插入or标记时,我都不想用<c:if和测试来浪费我的观点。localhost<img><link>

我正在使用 Struts 2 + JSP。

0 投票
5 回答
564 浏览

hosting - 网站后端的低成本技术架构

我正在考虑在不久的将来开设一个网站,除了标准的域名注册费用外,我不确定如何进行。我预计数据量会非常大,并且查看许多虚拟主机似乎虽然它们可能会提供极高的带宽上限,但我被告知他们经常在您达到每月限制之前暂停帐户。

有什么方法可以将带宽密集型组件卸载到专门处理大量数据消耗的单独主机上,并将网站元素托管在标准帐户上。虽然我意识到拥有自己的一组服务器是最好的,但我试图在一开始就找到一种相对具有成本效益的方法。

0 投票
3 回答
7635 浏览

design-patterns - 内容交付网络算法、示例、代码

在为内容分发系统编写软件时必须考虑哪些设计考虑,例如管理数据的同步和分发、将下载重定向到最近的服务器等等?

我也在寻找开源 CDN(内容交付网络)软件的示例。我能想到两个项目,CoralCDNOpenCDN

请注意,CDN 不仅仅是硬件带宽。CDN 是软件硬件的组合。

我想要的是流媒体和静态资产的软件。我无法弄清楚如何在服务器之间正确同步流媒体(因为文件访问可能相当随机),而静态资产似乎更容易一些,因为它是一次性请求。

0 投票
3 回答
4358 浏览

javascript - dojo.xd.js 无法识别 dojox.data.CsvStore

当我使用诸如

我得到错误

对于诸如

但是如果我使用从本地安装的 dojo 导入,错误就会消失,例如

我真的希望能够使用 CDN 托管的 dojo 安装。DojoX 库和 dojo.xd.js 之间是否存在已知问题?

提前致谢,

动漫

PSdojo.require("dojox.data.CsvStore");声明已经到位。

PPS 完整的“工作代码”如下。用 CDN 中的引用替换 CSS 和 JS 引用会破坏它。

0 投票
2 回答
1099 浏览

ajax - 在 CDN 上托管 Microsoft Ajax?

Google 在以下位置免费托管流行的 ajax 库:

您可以利用他们的带宽、他们的CDN,最重要的是,用户可能已经从另一个从谷歌检索他们的 JS 文件的站点缓存了它。

只是想知道任何地方的 Microsoft AJAX 是否也是如此?或者在微软网站上的某个地方我可以“窃取”托管服务。

我自己将它托管在像 Amazon A3 这样的 CDN 上也有什么好处。我相信我不会解决同时下载的数量问题,因为 Internet Explorer 会在下载脚本时阻塞。

0 投票
6 回答
3978 浏览

jquery - 带有 vsdoc 的 jQuery CDN 主机?

这个问题(我问过)和这个问题(西蒙问过)之后,是否有一个 CDN 可以并排提供 jQuery 脚本和 -vsdoc 版本?

例如谷歌提供:

但不提供

微软有 jQuery 的 CDN 吗?

0 投票
2 回答
1612 浏览

python - 用于调整图像大小的 CDN 选项

背景:

我在 Google App Engine 上开发一个应用程序。在我达到他们的文件大小限制之一——1MB 之前,它一直运行良好。我的应用程序的一个组件调整了用户上传的图像大小。这些文件通过 POST直接上传到 S3 ( http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1434 )。我正计划使用 CDN 来交付调整大小的图像。

问题:

我想知道是否有 CDN 提供了通过 HTTP 调用调整图像大小的 API。我发现 SimpleCDN 曾经提供过该服务,但感觉已将其删除。我想告诉 CDN 调整我从 URL 请求的图像的大小。

例如,

原始网址: http ://cdn.example.com/images/large_picture.jpg 将图像大小调整为 125x100: http ://cdn.example.com/images/large_picture.jpg/125/100

有谁知道提供这种功能的 CDN?或者有一个建议来绕过 Google App Engine 的 1MB 限制(不是 hack,而是代码的替代方法)。

0 投票
1 回答
1293 浏览

actionscript-3 - 如何避免使用 CDN 进行客户端缓存

在 AS3 中处理项目时,我需要传输一些文件以进行带宽测试。文件需要来自 CDN(客户端最近的代理)以使带宽测试可靠。

当然,如果远程文件被缓存在客户端浏览器中,带宽测试将不可靠。

通常我会在 GET 变量中添加时间戳以欺骗客户端缓存。但我可以想象这是使用 CDN 的一种非常糟糕的做法。

所以我的问题是:

如何在不真正更改请求的情况下强制绕过客户端缓存以检索文件的新版本?

提前致谢,

编辑 :

理想的情况是在 URLRequest 中发送一个缓存控制标头(感谢 Assaf!)。不幸的是,我已经尝试了一段时间,但它似乎在 FlashPlayer 中不起作用。即使在网络上,人们似乎也对这个话题持悲观态度。

快速示例:

有人曾经设法做出类似工作的东西吗?