Html5 Boilerplate使用以下技巧回退到本地存储的JQuery,如果从谷歌CDN抓取它失败:
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script>
Run Code Online (Sandbox Code Playgroud)
你会如何实现这个技巧来为jQuery UI执行相同的技巧?
我目前使用Akamai作为CDN,但我注意到浏览器也在缓存内容.浏览器缓存images/css/js非常棒,但我想知道是否有一种方法可以不在浏览器上缓存,而是在Akamai中缓存.
现在,从我的起源开始,我发送这样的标题:
Cache-Control: public, must-revalidate, max-age=300
Expires: Sun, 19 Feb 2012 19:04:30 GMT
Date: Sun, 19 Feb 2012 18:59:30 GMT
Run Code Online (Sandbox Code Playgroud)
Akamai尊重这些标题,但也将它们传递给用户.这使得浏览器实际上也缓存了内容.
这在大多数情况下都很有用,但我们也有一些CDN逻辑,如果用户有登录的cookie,绕过CDN缓存并直接到源.
因此,如果让一个未经过验证的用户点击"登录",则会通过登录过程发送它们并返回到同一页面.即使CDN会从源页面请求此页面,浏览器实际上再次请求相同的页面,看起来好像登录没有工作.
现在,我可以强制登录过程添加一个查询参数,如?l = 1或者其他什么,但必须有更好的方法.
我很想知道Akamai是否可以将Cache-Control标头覆盖为硬编码的无缓存值,但我想知道是否有办法在源中执行此操作?
谢谢!
这个问题试图找出是否有必要权衡CDN的好处,转而采用更有条理和更有条理的供应商代码管理.
我知道建议使用CDN来提供像jquery这样的供应商库.
然而,我今天正在阅读有关凉亭的内容,这让我很奇怪.通过bower,我可以以非常有条理的方式轻松管理应用程序的所有依赖项.我最终可以将它们打包在一个vendor.js文件中(使用自耕农,早午餐或简单的咕噜声),它将成为script标签中html中的服务器.
然而,虽然这种方法可以让我的生活更轻松,但它的缺点是什么?我能想到以下几点:
vendor.js文件中,浏览器最终会缓存此文件,但每当我添加新的第三方依赖项时,即每次更改供应商文件时,我都会遇到问题.浏览器必须重新加载该文件(从而丢失原始vendor.sj文件的缓存)以这种方式,花时间管理html中的依赖关系作为<script>标签,接缝提供更好的性能/加载时间.
你觉得我的思维方式有问题吗?组织代码的好处是说得bower足够有说服力吗?毕竟,它就像骨干一样.是的,骨干应用程序对于小型应用程序来说更重,它包含更多代码..但从开发的角度来看,它是值得的!
干杯(感谢您重新编辑问题的评论!)
我刚开始创建一个html文件,并想使用jquery.当我像这样使用本地机器上的jquery时,它工作正常.
<script src="jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用它时,它不起作用
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
当我像这样加载脚本时,我无法使用任何jquery函数.
我在这做错了什么?
编辑:顺便说一下,我的html文件在驱动器C的本地机器上:/
由于" 不允许错误的URI或跨站点访问 "问题,通过Cloudfront提供的字体在Firefox中被破坏.为了解决这个问题,我了解到我需要将"Access-Control-Allow-Origin"标头设置为通配符或源域.
我遇到的问题是,Cloudfront似乎不接受来自原点的标头.
例如,以下是我在服务器上ping字体时获得的标头列表:
curl -I -s "https://mysite.com/wp-content/themes/my-theme/includes/fonts/ProximaNova-Reg-webfont.ttf"
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 29 Jan 2014 16:03:03 GMT
Content-Type: application/x-font-ttf
Content-Length: 44992
Last-Modified: Tue, 28 Jan 2014 22:21:41 GMT
Connection: keep-alive
ETag: "52e82d75-afc0"
Expires: Thu, 29 Jan 2015 16:03:03 GMT
Cache-Control: max-age=31536000
Access-Control-Allow-Origin: https://mysite.com
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3600
Accept-Ranges: bytes
Run Code Online (Sandbox Code Playgroud)
这种反应一切都很好看; 但是,当我为同一资源ping Cloudfront时,我得到:
curl -I -s "https://ds6dj5kp03o39.cloudfront.net/wp-content/themes/my-theme/includes/fonts/ProximaNova-Reg-webfont.ttf"
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 44992
Connection: keep-alive
Date: Wed, 29 Jan 2014 16:22:30 GMT
Server: Apache/2.2.16 …Run Code Online (Sandbox Code Playgroud) https://myapp.com -> https://abcdefgh34545.cloudfront.com -> https://myBucket.s3-eu-west-1.amazonaws.com/index.html我如何使用Prerender.io此堆栈的服务?我必须以某种方式检测WebSpider/WebRobot正在访问该页面并将其重定向到prerender.io ...
我是BS的新手.我正在从MaxCDN检索Bootstrap CSS和JS文件的v3.3.6.我希望有一种方法可以包括glyphicons但我看不出怎么做.是否可以从CDN中检索glyphicons?
另外,我不明白Bootstrap下载页面在引用"预编译引导程序"时的含义为什么我需要预编译下载与MaxCDN下载.我看到预编译提供了glyphicons所以也许这是唯一的原因.
有时dns等待600ms而不是等待另一半秒,这使得90kb文件等待超过1秒.有时pingdom等待时间甚至会显示1秒.如果我尝试另一个测试,它有时会一起到90ms.
我知道第一个请求会花费更多时间,因为cloudfront首先需要从我们的服务器获取文件.我将缓存时间设置为86400 s,这意味着它应该从缓存中获取整个24小时的文件.但是,如果我在第一次测试后仅仅2小时尝试pingdom,它将再次变得很慢.
截至目前我正在使用这样的javascript
<script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/js/bootstrap.min.js"></script>
<script> $.fn.modal || document.write('<script src="js/bootstrap.min.js">\x3C/script>')</script>
Run Code Online (Sandbox Code Playgroud)
我正在从bootstrapcdn加载bootstrap.css
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)
如果cdn服务器关闭,有人可以告诉我如何加载本地副本.?
我已经创建了一个 S3 并且我成功地在存储桶上上传了文件。现在,我试图让它与 CloudFront 一起工作,但它给了我
非法位置约束异常
ap-east-1 位置约束与此请求发送到的区域特定端点不兼容。
我的 S3 网址是:http : //my-bucket-name.s3.ap-east-1.amazonaws.com/assets/local/css/app.css(这会返回文件)
CloudFront 链接到 S3,网址为:https : //id.cloudfront.net/assets/local/css/app.css(这会返回 IllegalLocationConstraintException)
在 S3 存储桶 > 权限 >
“阻止公共访问”已关闭
“存储桶策略”是自动生成的:
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "######"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket-name/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
cdn ×10
jquery ×4
amazon-s3 ×2
akamai ×1
bower ×1
cors ×1
css ×1
glyphicons ×1
http-caching ×1
http-headers ×1
performance ×1
seo ×1