问题标签 [google-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.
javascript - 如果一个源被阻止,如何加载一个或多个 JS/CSS 文件?
这是我的情况
我正在创建一些从 CDN 加载 JavaScript 的网站,例如 Google/jscdn.com。但其中一些在中国被完全封锁。但我的访客中有 50% 来自中国,其他来自其他国家。如果特定源被阻止,是否可以再加载一个源?
例如,如果googleapis.com
被阻止,我将加载从lib.sinaapp.com
哪个可以从中国访问。我想按给定的顺序加载它们:googleapis.com
先尝试,然后lib.sinaapp.com
。
没有服务器端代码可以做到这一点吗?
谢谢
caching - Safari 不会跨不同域缓存资源
假设我们有几个不同的网站:website1.com、website2.com、website3.com。我们在所有这些上都使用 jQuery,并从 CDN 中包含它,例如 googleapis.com。浏览器的预期行为是将其缓存一次并将其用于所有其他网站。Chrome 似乎可以这样做,但 Safari 会为每个域下载 jQuery。
例子
- 使用下面给定的 JS 代码,在 Chrome中打开nytimes.com、bbc.com和dw.de。
- 在第一个网站上附加 jQuery,然后查看 DevTools 的 Network 选项卡。它会说它得到了 jQuery。
- 现在打开任何其他网站并再次附加 jQuery - 答案将是“来自缓存”。
但是,Safari 会说它正在为每个域加载 jQuery,但尝试打开其中一个域上的任何网页并再次附加脚本 - 你会看到现在它说它从缓存中获取了 jQuery。所以看起来它缓存了一个域的数据,即使它已经从另一个域的确切 URL 下载了资源。
这个假设是否正确,如果正确,如何解决?
您可以复制/粘贴的代码:
UPD:使用静态图像对其进行了测试。
test.com、test2.com 和 test3.com 有<img src="http://image.com/image.jpg" />
. 在除 Safari 之外的所有浏览器中,访问日志仅显示一个(第一个)对图像的请求。Safari 获取每个新域(但不是子域)的图像。
cdn - 是否有任何 CDN 允许重写请求 URI,以便客户端路由与浏览器刷新配合得很好?
我有一个用静态 html/js/css 编写的 HTML5 应用程序(它实际上是用 Dart 编写的,但编译成 javascript)。我通过 CDN 提供应用程序文件,REST api 托管在单独的域上。该应用程序使用客户端路由,因此当用户开始使用该应用程序时,该 url 可能会更改为类似http://www.myapp.com/categories
. 问题是,如果用户刷新页面,会导致 404。
是否有任何 CDN 允许我创建一个规则,如果用户请求的页面是有效的客户端路由,它只会返回(在我的情况下)client.html
页面?
更详细的解释/示例
我的 Web 应用程序的静态文件存储在 S3 上,并通过 Amazon 的 CloudFront CDN 提供服务。有一个引导应用程序的 HTML 文件,client.html
. 这是访问域根目录时提供的默认文件,因此如果您访问www.mysite.com
浏览器,实际上是提供www.mysite.com/client.html
.
Web 应用程序使用客户端路由。一旦应用程序加载并且用户开始导航,URL 就会更新。这些 url 实际上并不存在于 CDN 上。例如,如果用户想要浏览小部件,她会单击一个按钮,客户端路由将显示“小部件”视图,并且浏览器的 url 将更新为www.mysite.com/widgets/browse
. 在 CDN 上,/widgets/browse
实际上并不存在,所以如果用户点击浏览器上的刷新按钮,他们会得到 404。
我的问题是是否有任何 CDN 支持查看请求 URI 并重写它。所以,我可以看到一个请求/widgets/browse
并将其重写为/client.html
. 这样,将提供应用程序而不是返回 404。
我意识到这个问题还有其他解决方案,即在 CDN 前面放置一个服务器,但它不太理想。
javascript - 冗余让微软和谷歌托管 jQuery
我已经看到了一些关于是否使用 CDN 的论点以及关于谁(谷歌、微软等)最适合托管 jQuery 的其他论点。
我的问题:让多个实体托管 jQuery 是否多余?(以防万一)
或者,作为一个例子,由谷歌托管它是否更好,并且你也有自己的图书馆可以依靠?
fonts - 当 Google 字体加载失败/缓慢时处理?
谷歌字体现在在中国被封锁/严重限制,我们的网站现在很慢。
我们想要处理失败情况而不是让我们的用户等待。当 Google 无法交付时,可以故障恢复使用系统字体,那么,如果我们使用下面的代码,如何解决这个问题?
会改用 JS API 来解决这个问题吗?
google-visualization - 如何在x轴上做两行文字?
我正在尝试制作您可以在下面看到的图表。检查 x 轴上有两行文本,我不知道如何使用 Google API 做到这一点。我怎样才能做到这一点?
非常感谢。
google-cloud-storage - 使用谷歌存储桶作为按需拉取 CDN
我正在尝试使用 Google Cloud Storage 存储桶从 GCE 上的 Web 服务器提供静态文件。我在文档中看到我必须手动复制文件,但我正在寻找一种方法来按需动态复制文件,就像其他 CDN 服务一样。那可能吗?
jquery - jQuery CDN 回退不起作用
我正在使用这个问题的第二个答案中的解决方案使用 Google 托管 jQuery 的最佳方式,但回退到我在 Google 上的托管库失败
该解决方案说使用以下代码为 jQuery 的本地副本提供回退,以防 Google 的 CDN 无法正常工作:
我已经实现了这段代码并在我安装了 IIS 的本地机器上运行它。只要我有互联网连接,它就可以正常工作。如果我禁用我的 Internet 连接,它不会退回到我的本地 jQuery 副本并且 Web 应用程序会中断(即功能丢失)。
有没有新的方法来做回退或者我的测试方法有缺陷?
google-cloud-storage - 通过域在 google cdn 存储桶上使用 gsutil 设置 acl
在文档https://cloud.google.com/storage/docs/gsutil/commands/acl#ch上,它说此命令gsutil acl ch -g my-domain.org:R gs://gcs.my-domain.org
应授予域中的用户访问权限,my-domain.org
但我不确定这是否意味着请求的引用者存储桶应该有 my-domain.org。你可以解释吗?
如果没有,那么有没有办法保护内容免受盗链?
javascript - 在 Dojo 1.10.3 的 Google CDN 上找不到 parser.js
我正在使用 Google CDN 来获取 DOJO。
这是我在我的网站中使用的代码。
当像这样调用我的代码模块'dojo/parser'时
我得到 404 not found for module parser
。它实际上指向 Google CDN 的地址:
http://ajax.googleapis.com/ajax/libs/dojo/1.10.3/dojo/dojo.js/parser.js
- 为什么 CDN 上缺少模块?或者我在我的代码中遗漏了什么?
- 从哪里或如何加载它的任何想法?
注意:如果我手动将地址更改为
我得到了文件,可能是一个错误?