Varnish -如何在重新获取时为所有客户端提供过时的内容?

标签 varnish varnish-vcl

我在后端前面使用 Varnish。

因为后端有时很慢,所以我启用了宽限模式来为客户端提供陈旧的内容。但是,在宽限模式下,仍然有一个用户需要转到后端并且具有非常糟糕的用户体验。

Varnish 是否可以在刷新缓存的同时为所有用户提供陈旧的内容?

我看到有人建议使用 cron 作业或脚本来刷新本地主机上的缓存。这不是一个优雅的解决方案,因为我们网站上的 URL 太多,手动刷新每个 URL 非常困难。

我知道根本问题出在后端,我们需要在那里解决问题。但在短期内,我想知道是否可以提高 Varnish 层的响应时间?

最佳答案

您可以使用重新启动和帮助程序在Varnish 3中进行此操作(通常情况下)。

这里描述了如何编写VCL :(披露:我自己的博客)

http://lassekarstensen.wordpress.com/2012/10/11/varnish-trick-serve-stale-content-while-refetching/

它相当复杂,但是当您有一个刚刚过期的现有对象时,它就可以工作。
在(将来的)Varnish 4中,将有附加的VCL Hook ,这些 Hook 将使这些技巧更加容易。

关于 Varnish -如何在重新获取时为所有客户端提供过时的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18305455/

相关文章:

http - Varnish:隐藏内部后端请求

linux - 我正在 EC2 linux 上从 docker hub 运行 open varnish 镜像,如何启用 varnish 日志记录?

caching - varnish param.set 在服务重启后重置为以前的值

caching - 缓存控制无法在chrome和 Varnish 中运行,也未遵守缓存控制

nginx - 设置 Apache + Nginx 的后端设置

正则表达式匹配任何不是子模式的东西

regex - 在 Varnish 正则表达式中提取捕获组内容

php - Varnish 缓存+ PHP

Varnish 不断缓存我的跟踪软件

ruby-on-rails - 欺骗 Rails 应用程序使其认为它在不同的端口上