清漆缓存 - 网页的初始缓存

时间:2013-01-08 07:26:47

标签: apache caching varnish varnish-vcl

我已经在我的Apache Web服务器上安装了Varnish缓存并正确配置了它们。它工作正常,我现在可以通过Varnish Cache访问我的网页。

清漆的默认行为是存储Web服务器所服务页面的副本。下次请求同一页面时,Varnish将提供副本,而不是从Apache服务器请求页面。

现在我的问题是:在设置Varnish缓存之后是否可以最初缓存我的整个网站,而无需访问页面然后将其存储在缓存中?这是因为,在设置清漆之后,缓存最初是空的,并且它将需要访问页面以便在缓存上可用。这可以在不必手动访问每个页面的情况下完成吗?

2 个答案:

答案 0 :(得分:3)

您正在寻找的是一种预热缓存的方法。您可以使用varnishreplayWeb crawler(例如Wget或HTTrack)浏览您的网站。或者,如果您有sitemap个页面,则可以将其用作起点,并通过循环缓存并在页面上发出请求来预热缓存。卷曲或wget。

使用varnishreplay要求您首先运行varnishlog并收集流量日志,然后才能使用它来回放流量并预热缓存。

Wget,HTTrack等可以指向您的主页,他们将通过您的网站爬行。根据站点的大小和性质,这可能不实用(例如,如果您广泛使用Ajax)。

除非您的页面需要很长时间才能从后端服务器(即Apache)加载,否则我不会太担心预热缓存。如果缓存内容的TTL足够高,大多数访问者无论如何都只会收到缓存内容。

答案 1 :(得分:1)

有一种更好的方法可以使用req.hash_always_miss并使用Varnish 3和4(也使用站点地图)。它可以预热缓存并刷新旧页面,而无需清除缓存。完整的图表,如何配置它的概述和各种用例的3个脚本在这里列出http://www.htpcguides.com/smart-warm-up-your-wordpress-varnish-cache-scripts/,并且很容易适用于非Wordpress站点。