问题标签 [varnish-4]
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.
caching - 为什么有这么多通过清漆?
我有一个清漆缓存(版本 4),其后端有时会变得“慢”。当这个后端“慢”到不饱和时,我使用健康检查来强制清漆从缓存中提供陈旧的内容。
所以 mi 后端定义:
}
}
并配置宽限模式:
}
但只有在这种配置下,如果后端有问题并且缓存中不存在对象,varnish 会返回 503(我想从后端获取)。为了避免这种行为,我必须在 vcl_miss 中放置相同的 conf 以强制清漆从“病态”后端获取内容:
}
这样,结果正如预期的那样,当后端很慢时,清漆从缓存中提供陈旧的内容并且响应时间得到改善。
但是,我发现现在我有更多的“通过”请求。请求当然,清漆应该缓存(并且在它之前)。大约 * 100 多个。所以我解决了一个问题,但我创造了另一个。
cookie 未设置(在 recv 和后端响应中),以强制清漆进行缓存。
所以,我的问题是......为什么我有很多通行证请求?我怎么能避免呢?
html - 如何使用 Varnish 引用包含编码 HTML 实体的 ESI URL?
我正在使用 Varnish 4.1.2,并尝试包含 ESI 内容。有时,所包含内容的 URL 可能包含编码的 HTML 实体,例如'
( '
)。
例如,我的应用程序为外壳返回的 HTML 中有以下内容:
这应该会导致 ESI 请求具有 3 个段且没有查询字符串的路径,当完全解码时,会导致:
esi
map
alice's house
第三段中的撇号是 HTML 编码的,因为它是在 HTML 文档中传输的。该空间是 URL 编码的,因为它是 URL 的一部分。
然而,在发出 ESI 请求之前,Varnish 似乎没有解码 HTML 编码的实体。它发送一个请求/esi/map/alice's%20house
,这是一个错误的请求,因为&
在路径或 URL 中是不合法的。
如何让 Varnish 正确处理这些 ESI 链接?
caching - 如何清除清漆中的完整缓存?
我正在寻找一种方法来清除 Varnish 中所有域和所有 URL 的缓存。
目前,我需要为每个 URL 发出单独的命令,例如:
虽然我正在寻找一种方法来做类似的事情
这将清除 example.com 下的所有 URL,以及 example.com 子域中的所有 URL,基本上所有由 Varnish 管理的 URL。
知道如何实现这一目标吗?
这是我当前的 VCL 文件:
varnish - Varnish是否默认缓存404?
我真的很惊讶我在任何地方都找不到这个答案,但我做不到。
vcl_recv
Varnish 4.0+等内置VCL ,Varnish是否默认缓存404响应?
caching - Varnish4 - 更改 PURGE 响应标头
我正在尝试更改 Varnish4 中的 PURGE 响应标头
我在vcl_recv和vcl_deliver中修改了“ Server: Varnish ” 。除了 PURGE 之外,这似乎适用于任何其他请求。
我需要更改服务器标头或至少添加自定义响应标头
我找不到任何关于它的文档,所以我想知道是否有人以前做过,或者它是一个硬编码的选项。
symfony - 缓存 sitemap.xml 是个好主意吗?
我有一个由我的 Symfony 应用程序动态生成的 sitemap.xml 页面。我也使用清漆。我想知道缓存 sitemap.xml 页面是个好主意还是没用?
谢谢。
caching - 在 Varnish 4 vcl 文件上更改 default_ttl
我愿意从配置文件中更改默认 ttl 值,而不是通过 varnishd。
varnish - Varnish 4.1 - 根据后端响应调用重启
在 Varnish 4 之前,可以从 vcl_fetch 调用重新启动以启动另一个到达 vcl_recv 的流。
在版本 4 中,逻辑被分离到客户端和后端,我需要能够根据后端响应调用重启。我认为可能的一个方向是使用 vcl_synth 作为后端和客户端之间的中间件,但后端无法发送特定的错误代码或仅 msg 标准 503 错误。
有任何想法吗?
varnish - 如何限制 Varnish 使用多少 CPU 内核?
我有一个 8 核服务器,它将在 HTTP 服务器前面运行 Varnish,两者都在同一台机器上。
如何限制 Varnish 使用不超过 4 个内核?
我已经阅读了文档中的工作池,但它也这样说:
“虽然 Varnish 线程模型允许你使用多个线程池,但我们建议你不要修改这个参数。根据我们的经验和测试,我们已经看到 2 个线程池就足够了。换句话说,Varnish 的性能并没有添加超过 2 个池时增加。
注意 如果您遇到建议每个 CPU 内核有一个线程池的调优建议,请放心,这是旧建议。我们建议最多有 2 个线程池,但您可以增加每个池的线程数。”
所以看起来2个线程池就足够了。这是否意味着在这种情况下只使用两个 CPU 内核?
搜索文档到目前为止我还没有找到明确的答案。
varnish - 在清漆 4 中的 cookie 上设置 HTTPOnly 标志
我们的基础设施中有设备生成的 cookie,我们无权访问设备的配置,因此无法在它直接生成的 cookie 上设置 HTTPOnly 标志。
我们在这个设备前面确实有一个清漆 4 缓存,是否可以在 cookie 上设置 HTTPOnly 标志?如果是这样,怎么办?