标签: google-cdn

Safari不会跨不同域缓存资源

假设我们有几个不同的网站:website1.com,website2.com,website3.com.我们在所有这些上使用jQuery,并将其包含在像googleapis.com这样的CDN中.浏览器的预期行为是将其缓存一次并将其用于所有其他网站.Chrome似乎是这样做的,但Safari会为每个域下载jQuery.

  1. 使用下面给出的JS代码在Chrome 中打开nytimes.com,bbc.comdw.de.
  2. 在第一个网站上添加jQuery,然后查看DevTools的Network选项卡.它会说它有jQuery.
  3. 现在打开任何其他网站并再次附加jQuery - 答案将是"来自缓存".

但是,Safari会说它正在为每个域加载jQuery,但是尝试在其中一个域上打开任何网页并再次附加脚本 - 你会看到现在它说它从缓存中获得了jQuery.所以看起来它缓存了域的数据,即使它已经从另一个域的确切URL下载了资源.

这个假设是否正确,如果是,如何解决?

您可以复制/粘贴的代码:

setTimeout(function() {
    var SCRIPT_SRC = '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js';

    var s = document.createElement('script');
    s.type = 'text/javascript';
    s.async = true;
    s.src = SCRIPT_SRC;
    var x = document.getElementsByTagName('script')[0];
    x.parentNode.insertBefore(s, x);
}, 0);
Run Code Online (Sandbox Code Playgroud)

UPD:用静态图像测试它.

test.com,test2.com和test3.com都有<img src="http://image.com/image.jpg" />.在除Safari之外的所有浏览器中,日志仅显示一个 - 首先 - 请求图像.Safari获取每个新域(但不是子域)的图像.

safari caching cdn browser-cache google-cdn

7
推荐指数
2
解决办法
1661
查看次数

如何在像谷歌这样快速免费的CDN上托管自己的JavaScript脚本文件(Jquery除外)?

Dave Ward鼓励我在google CDN上外部托管我的javascript jquery:

//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js
//ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js
Run Code Online (Sandbox Code Playgroud)

现在,我可以在谷歌等免费CDN上托管我的其他/非(JQuery)JavaScripts吗?
这可能吗?或仅适用于Jquery /着名的常用脚本?

谢谢你的建议.

javascript hosting cdn google-cdn microsoft-cdn

6
推荐指数
5
解决办法
2万
查看次数

没有CSS资产可以安全地使用jQuery-UI吗?

可以安全地使用jQuery-UI而不包括CSS资产吗? 谷歌主持JS文件,但我没有在该页面上看到任何对jQuery-UI CSS资源的引用.如果我只包含jquery-ui.js,我可以期待哪些问题或问题?

javascript css jquery jquery-ui google-cdn

6
推荐指数
1
解决办法
3099
查看次数

不使用公共CDN加载Javascript库是否有好处?

我听说所有的情况都支持使用像谷歌API这样的CDN 来托管我的网络应用程序的JQuery和Prototype等JavaScript库.它更快,节省带宽,允许并行加载脚本等等.但我最近在Douglas Crockford的json2.js脚本中发现了以下评论:

使用您自己的复印件.非常不愿意从您无法控制的服务器加载代码.

我很好奇他的论点背后可能是什么,以及它是否专门针对谷歌等公共CDN的用户,还是其他什么?

javascript cdn google-cdn

6
推荐指数
1
解决办法
1225
查看次数

谷歌cdn jQuery mobile

这有效:

<script src="http://code.jquery.com/jquery-1.5.min.js" type="text/javascript"></script>
<script src="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

但我更喜欢语法:

<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("jquery", "1", {uncompressed:true});
</script>
Run Code Online (Sandbox Code Playgroud)

在发展中.

问:我可以使用google.load命令加载jQuery mobile吗?

jquery-mobile google-cdn

6
推荐指数
1
解决办法
1万
查看次数

如何查看阻止远程脚本时返回的内容

我在我的webapp中使用谷歌托管的jQuery(//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js)作为错误诊断的一部分,我有一个window.onerror处理程序,可以捕获任何错误我没有在本地捕获并让服务器知道它们.

到目前为止一切都很好,但是......有时候会出现这样的错误:

"脚本错误.","加载脚本时出错","意外令牌<"

我的假设是谷歌CDN在这些情况下被阻止(无论出于何种原因).我确实有一个jQuery的本地回退,我相当确定它运行良好,但我想知道返回什么,以便我可以测试我的假设,并可能将这些用户列入Google CDN的白名单(如果是公司防火墙阻止它).

但到目前为止,我还没有弄清楚如何检索返回的内容.如果它是文件,则无法检索SCRIPT标记的innerText,因跨域策略而无法执行ajax请求等.

有没有人对如何做到这一点有任何想法?

javascript browser jquery cdn google-cdn

6
推荐指数
1
解决办法
380
查看次数

Angular 1.3.14 merge(dst)不存在

我很困惑这一个.在角度api和github上有一个合并函数,它在两个对象上进行深度合并,而extend()则执行浅复制.

我使用google的cdn for angular,并调用angular.extend('param'),但调用angular.merge('param')会给出未定义的函数.比较谷歌的angular.js和自己的角度来看,合并确实存在于角度上,但不是谷歌.

任何想法,或其他人有这个问题.我可以让谷歌知道吗?

merge google-cdn angularjs

6
推荐指数
1
解决办法
2382
查看次数

Jquery迁移CDN后备条件

为了提高页面速度我使用谷歌CDN下载jquery文件,我也回退到从本地下载jquery谷歌CDN失败.

以下是使用后备的方法

<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
    document.write(unescape("%3Cscript src='common/script/jquery-1.9.1.min.js' type='text/javascript'%3E%3C/script%3E"));
}

</script>
Run Code Online (Sandbox Code Playgroud)

上面的代码是完美的,我的问题是如何检查是否加载了jquery迁移文件?

我只需要检查是否加载了http://code.jquery.com/jquery-migrate-1.1.0.js.我希望if(typeof jQuery =='undefined'){}这不会在这里工作.

任何解决方案

jquery cdn google-cdn jquery-migrate

5
推荐指数
1
解决办法
2838
查看次数

将Firebase存储与Google Cloud CDN集成

我正在使用Firebase制作应用程序。

用户上传的照片会保存在Firebase存储中。

我使用Firebase云功能使缩略图能够更快地加载照片供稿,

但在一页中,我需要一次加载原始照片(最多30张照片)。

为了更快地加载原始照片,我想使用Google Cloud CDN。

我在这里关注文档google cloud cdn docs,做了负载均衡器和cdn

在此处输入图片说明

我可以看到Cloud CDN:已启用(后端存储桶是我的Firebase存储),但似乎无法正常工作。

在我的应用程序中,我使用firebase存储网址加载这些图片,这些网址看起来像是“ firebasestorage.googleapis.com / ....”。

如何将Firebase存储与Google Cloud CDN集成在一起?

google-cdn firebase google-cloud-platform firebase-storage google-cloud-cdn

5
推荐指数
1
解决办法
2557
查看次数

如何从ACL控件禁用Google Cloud Storage存储桶列表?

我们正在使用Google云存储作为CDN。

但是,任何访问者都可以通过键入以下内容列出所有文件:http : //ourcdn.storage.googleapis.com/

默认情况下,在存储桶下的所有文件仍是公共可读的情况下如何禁用它?

我们之前使用

gsutil defacl ch -g AllUsers:READ 
Run Code Online (Sandbox Code Playgroud)

cdn google-cdn google-cloud-storage

4
推荐指数
3
解决办法
2388
查看次数