- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在使用Varnish缓存6.2来位于WebAPI后端的前面。
后端会在某些请求上向后发送一个缓存控制 header ,以便我们可以缓存更长的时间。
但是-如果后端出现故障并保持故障状态,我们将在一个小时内重新发送过期的验证信息。
因此,后端的典型缓存控制响应 header 如下所示:
public, max-age=30, stale-while-revalidate=3600
sub vcl_backend_response {
if (beresp.status == 500 || beresp.status == 502 || beresp.status == 503 || beresp.status == 504)
{
if (bereq.is_bgfetch)
{
return (abandon);
}
set beresp.ttl = 1s;
}
}
sub vcl_recv {
return(pass);
}
sub vcl_deliver {
if (obj.uncacheable) {
set req.http.x-cache = req.http.x-cache + " uncacheable" ;
} else {
set req.http.x-cache = req.http.x-cache + " cached" ;
}
set resp.http.x-cache = req.http.x-cache;
}
sub vcl_hit {
set req.http.x-cache = "hit";
}
最佳答案
这是预期的行为。如果对象是第一次从后端获取的(即t=0
),则Varnish会对其进行缓存,将beresp.ttl
设置为30s
,将beresp.grace
设置为3600s
。然后,如果您在t=3000
时将对象请求为Varnish,则旧对象将被传递到客户端(即Age: 3000
),并且将触发异步后台获取以刷新缓存的对象。如果您在t=3001
时再次向Varnish请求对象,如果后台获取已完成其工作,则将交付一个新对象(即Age: 1
)。以下测试说明了此行为:
varnishtest "..."
server s1 {
rxreq
txresp -hdr "Cache-Control: public, max-age=1, stale-while-revalidate=60" \
-hdr "Version: 1"
rxreq
txresp -hdr "Cache-Control: public, max-age=1, stale-while-revalidate=60" \
-hdr "Version: 2"
} -start
varnish v1 -vcl+backend {
} -start
client c1 {
txreq
rxresp
expect resp.http.Version == 1
expect resp.http.Age == 0
delay 5.0
txreq
rxresp
expect resp.http.Version == 1
expect resp.http.Age == 5
delay 0.1
txreq
rxresp
expect resp.http.Version == 2
expect resp.http.Age == 0
} -run
varnish v1 -expect client_req == 3
req.grace
期间使用
vcl_recv
进行播放。如果后端正常,则可能需要将其设置为
0s
。请检查
https://varnish-cache.org/docs/trunk/users-guide/vcl-grace.html#misbehaving-servers了解详细信息。
关于caching - Varnish - stale-while-revalidate 似乎没有重新验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58396657/
在我的理解中,这两个指令都意味着缓存服务器将要求原始服务器重新验证来自客户端浏览器的请求。这两个指令有什么区别? 最佳答案 RFC 7234, section 5.2.2.7 , 解释: The "p
Cache-Control: no-cache 与 Cache-Control: max-age=0, must-revalidate, proxy-revalidate 的 HTTP 响应有什么区别
我经常用 Cache-Control: no-cache 或 Cache-Control: max-age=0 规范说must-revalidate是为了max-stale...(服务器问题max-s
因此,我编写了一段代码,在单击框架南部区域的按钮后,您会得到一个矩形。 但是由于这个原因,单击按钮后代码似乎不起作用 public void actionPerformed(ActionEvent e
我有一个主 JPanel、一个内部 JPanel 和一个用于内部 JPanel 的 JScrollPane mainPanel = new JPanel(); innerPanel = new JPa
我就遇到过这样的问题。当我在容器上调用 .revalidate 时,出现 IndexOutOfBoundsException。 我有一个 Runnable 类,它可以增加或减少组件的边距。我用它来制作
我正在尝试创建一个窗口框架来显示游戏窗口。我在 GameWindow 类中扩展了 JFrame 并创建了两个方法:drawBackground(用实心矩形填充屏幕)和 drawGrid,使用 for
**你好,我正在尝试用 java 创建一个存档器。这意味着我不断地从流中读取和写入。我希望能够更新 JProgressBar 以显示我已经写了多少。我的代码当前在存档中的每个条目之后更新进度栏。我的变
对于我的程序,我有一个 JPane,随着游戏的进行,它会向面板添加标签,但是我可以让面板显示的唯一方法是使用 add(label) 然后重新验证,反之亦然以删除标签。 我的问题是,一旦我在屏幕上有超过
我们正在使用Varnish缓存6.2来位于WebAPI后端的前面。 后端会在某些请求上向后发送一个缓存控制 header ,以便我们可以缓存更长的时间。 但是-如果后端出现故障并保持故障状态,我们将在
我正在尝试使Varnish与最后修改的 header 一起使用,但是无论我做什么,我的页面都会在120年代被缓存,并且Varnish永远不会使用后端进行验证。 我的后端正在发送这些 header :
我有这个 NextJS 站点,其中有从 Firestore 加载数据的 getStaticProps。 我有这个: return { props: { allPosts: post
我对java很陌生,我正在尝试创建我自己的拼字游戏。我创建了自己的 Board 类和 Tile 类 JPanel。当我在板上绘制图 block 时: Tile tile = new Tile(curr
Cloudflare 记录了 Cache-Control 的指令列表 header ,包括 stale-while-revalidate . stale-while-revalidate= When
网址:http://tinyurl.com/358lh6a 每当 DomainSelect(域扩展名)无论如何更改时,我都想重新验证宫殿地址(他们想要的域,形式是:名称)。 我尝试了一个简单的方法:
我在 JPanel 中有一个方法 private void paintScore(Graphics2D g) { Font scoreFont = new Font("Arial", Font
我正在组合一个 Swing 应用程序,我经常想在其中替换 JPanel 的内容。为此,我调用 removeAll(),然后添加我的新内容,然后调用 revalidate()。 但是,我发现旧内容实际上
本文整理了Java中org.knowm.xchart.XChartPanel.revalidate()方法的一些代码示例,展示了XChartPanel.revalidate()的具体用法。这些代码示例
如果应用中的购买调用 BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED:需要调用 acknowledgePurchase(... 重新验证订单的
我在尝试查询表 AVC 时突然开始遇到此错误。 ORA-04045: errors during recompilation/revalidation of PUBLIC.AVC ORA-04098:
我是一名优秀的程序员,十分优秀!