问题标签 [fastly]
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.
varnish - 如何在varnish-vcl中提取字符串的前n个字符?
我正在寻找一种从 VCL 中的字符串中提取前“n”个字符的方法。我在 VCL 文档中找不到像 trim(str,starting_pos) 或 substring(str,len) 这样的函数。我试过在 google 和 stackoverflow 上搜索这个,但什么也没出现,所以我在这里问。我感谢您的帮助。
caching - 如果 Cache-Control 有 `no-cache` 和 `max-age=900` 会发生什么?
如果我将服务器响应设置为:会发生什么
Cache-Control: private,no-cache,max-age=900
?如果标题是这样的会发生什么:
Cache-Control: public,no-cache,max-age=900
?
既然它有一个no-cache
浏览器(或代理服务器)是否考虑max-age
?
google-app-engine - CDN 背后的 App Engine 灵活(快速)
我们在后面运行一个 App Engine Flexible 应用,前面是 Fastly (CDN)。我们已设置ghs.googlehosted.com
为源服务器,因此如果该服务器没有缓存版本,CDN 会将请求转发到该服务器。这几个月来一直运行良好。
但是,我们现在要确保ghs.googlehosted.com
通过 TLS 快速连接到源 ( )。它似乎ghs.googlehosted.com
不支持 TLS。关于如何克服这种情况的任何想法?
api - 错误 401 BAN 快速
我正在处理一个奇怪的问题,我的API 平台项目托管在 Heroku 中,并且我正在快速使用缓存(清漆缓存)。
我的问题是我第一次执行 PUT 请求时,出现此错误:
"hydra:description": "客户端错误:BAN http://example.global.ssl.fastly.net导致 401 Unauthorized response:\n{"code":401,"message":"JWT Token not found" }\n",
如果我再试一次,那么我没有任何错误并且可以再次正常工作。
这意味着缓存服务器正在尝试使资源无效但无法“登录”。
重要提示:在我的本地环境中工作正常。
有任何想法吗?
amazon-web-services - AWS ELB 从 Fastly 健康检查中获得大量 404 错误
在我的 Elastic Beanstalk 应用程序的日志中,我不断看到"GET /aetn-heartbeat.html HTTP/1.1" 404 158 "-" "Varnish/2.1+fastly (healthcheck)"
负载均衡器工作正常,但由于这些 404 错误,我的 ELB 的运行状况不断显示下降,这有点令人困惑。我的问题是:我会忽略这些 404 吗?想办法阻止这些请求?还是有真正的问题需要解决?
varnish - 在 Varnish VCL 中访问后端响应的主体
我的 Varnish VCL 代码需要向后端系统发出一个简单的 GET 请求,并确定请求的资源是否可访问。不幸的是,后端系统总是返回 200,我必须检查响应的实际正文才能做出决定。
有没有办法在 VCL 中访问响应正文(小于 1KB)并对其进行子字符串搜索?
我试图避免仅为此功能实施代理服务。
PS 现在我必须坚持使用 Varnish 2.1(快速)
jwt - 如何在配置 Fastly CDN 时修复 Varnish VCL 中未终止的短字符串错误
我正在尝试使用 Varnish VCL 在 Fastly CDN 上设置基于令牌的身份验证,并使用此示例 VCL 片段在此处生成和验证 JWT 令牌 -
现在,当我尝试编译它时,它会返回 -
看起来我在合成块期间没有以某种方式正确地转义这些值。
我尝试在 vcl_recv 子例程中添加此合成块的唯一原因是因为我想测试摘要如何生成 JWT 令牌并对其进行验证,并且我想在 Node.Js 的服务器端创建类似的 JWT 令牌所以我试图输出令牌的不同中间部分进行调试。
我对 Varnish 的语法和语义不太熟悉,但我仍然寻求帮助来查找有关此调度子例程的任何文档,但到目前为止还没有找到。
那么,任何人都可以帮助解决这个问题,并让 vcl_recv、vcl_error 在 json 响应中插入不同的中间值。
我尝试使用一些基于 Node.Js 的 base64 url 解码库来解码返回的令牌部分,并且能够解码标头和有效负载部分,但我无法从 Node.Js 生成签名部分。那么,任何人都可以建议 node.js 或任何 javascript 库中 base64url_nopad() 的等价物吗?
对于 hmac_256 加密部分,我们正在尝试使用加密库并创建一个 hmac,例如 crypto.createHmac('sha256', 'SupSecretStr').update().digest('hex'); 但是我认为js中的所有base64编码url库都会返回填充url,这就是为什么这个hmac 256摘要的base64编码部分与用清漆生成的不匹配的原因
gulp - 如何调整我的 gulp 静态资产修订以与 ServiceWorkers 一起使用?
上下文:我有一个生产应用程序(如果你想看这里),它当前正在使用静态资产修订包,除了它在生成内容哈希时也处理依赖项之外。gulp-rev-all
gulp-rev
它生成一组具有静态名称(例如goals.js
become goals.6a5aa614.js
)并使用这些静态名称相互引用的新文件。然后我在生产环境中使用 Fastly CDN 提供这些文件,因此我的 NodeJS 服务器没有被积极用于静态资产。这一直很好。
现在我正在使站点与服务人员离线工作。由于我去年在同步逻辑上做了很多工作,所以网站的动态部分很容易检修。但是我对如何处理我的静态资产有点不知所措。
我想我会使用工作箱,这似乎工作正常。但是workbox precache
使用查询来破坏缓存而不是更改文件名,两者都做似乎很愚蠢。但是,如果我停止使用版本化名称,那么如何在不支持 service worker 的浏览器上破坏缓存?
(我还有另一个相关的问题,考虑到 Fastly 的响应对 SW 来说是不透明的,因此继续使用 Fastly 是否有意义,因此不一定是预缓存的好选择?虽然没有 Fastly,但对于任何人来说,应用程序会变得慢很多没有使用服务工作者,这听起来与 PWA 方法对立。我应该添加一个 nginx 缓存还是什么?(我不知道这是什么,但我听说过几次))
在我看来,这必须有一个优雅的解决方案,但我的理解gulp
非常有限,我很难知道什么是可能的,而且我对 ServiceWorkers 和缓存的理解非常有限,我很难知道正是我想要的。
因此,我无法在这个问题上获得任何牵引力:
如何调整我的 gulp 静态资产修订以与 ServiceWorkers 一起使用?
有用的一件事是链接到其他生产应用程序如何处理此问题的示例。
nginx - 请求网址中的无穷大
有人对以 结尾的请求 URL 有问题Infinity
吗?
碰巧我们的服务器日志以某种方式接收这种模式的请求。我不知道是否是返回溢出的模式或任何类型的计算,或者是否有任何 CDN 弄乱了路径。
尽管这可能是一个愚蠢的问题,但也许我可以就如何追踪问题的原因获得一些见解。
提前致谢
varnish-vcl - 使用 Fastly CDN 将动态 CSS URL 放入 HTTP 标头
我正在为缓存清除生成动态 CSS URL。即它们的格式为styles-thisisthecontenthash123.css
.
我还想使用 HTTP Link 标头来稍微更快地加载文件。即有标题Link: <styles-thisisthecontenthash123.css>; rel=stylesheet
我很确定在 Fastly 中使用 VCL 可以做到这一点,但我对生态系统还不够熟悉,无法弄清楚。CSS URL 在 中index.html
,已缓存。我想我可以打开index.html
并使用正则表达式来解析 CSS URL。我该怎么做?