假设我们有几个不同的网站:website1.com,website2.com,website3.com.我们在所有这些上使用jQuery,并将其包含在像googleapis.com这样的CDN中.浏览器的预期行为是将其缓存一次并将其用于所有其他网站.Chrome似乎是这样做的,但Safari会为每个域下载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获取每个新域(但不是子域)的图像.
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 /着名的常用脚本?
谢谢你的建议.
可以安全地使用jQuery-UI而不包括CSS资产吗? 谷歌主持JS文件,但我没有在该页面上看到任何对jQuery-UI CSS资源的引用.如果我只包含jquery-ui.js,我可以期待哪些问题或问题?
这有效:
<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吗?
我在我的webapp中使用谷歌托管的jQuery(//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js)作为错误诊断的一部分,我有一个window.onerror处理程序,可以捕获任何错误我没有在本地捕获并让服务器知道它们.
到目前为止一切都很好,但是......有时候会出现这样的错误:
"脚本错误.","加载脚本时出错","意外令牌<"
我的假设是谷歌CDN在这些情况下被阻止(无论出于何种原因).我确实有一个jQuery的本地回退,我相当确定它运行良好,但我想知道返回什么,以便我可以测试我的假设,并可能将这些用户列入Google CDN的白名单(如果是公司防火墙阻止它).
但到目前为止,我还没有弄清楚如何检索返回的内容.如果它是文件,则无法检索SCRIPT标记的innerText,因跨域策略而无法执行ajax请求等.
有没有人对如何做到这一点有任何想法?
我很困惑这一个.在角度api和github上有一个合并函数,它在两个对象上进行深度合并,而extend()则执行浅复制.
我使用google的cdn for angular,并调用angular.extend('param'),但调用angular.merge('param')会给出未定义的函数.比较谷歌的angular.js和自己的角度来看,合并确实存在于角度上,但不是谷歌.
任何想法,或其他人有这个问题.我可以让谷歌知道吗?
为了提高页面速度我使用谷歌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'){}这不会在这里工作.
任何解决方案
我正在使用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
我们正在使用Google云存储作为CDN。
但是,任何访问者都可以通过键入以下内容列出所有文件:http : //ourcdn.storage.googleapis.com/
默认情况下,在存储桶下的所有文件仍是公共可读的情况下如何禁用它?
我们之前使用
gsutil defacl ch -g AllUsers:READ
Run Code Online (Sandbox Code Playgroud)