apache - Varnish Cache - 网页的初始缓存

标签 apache caching varnish varnish-vcl

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

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

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

最佳答案

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

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

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

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

关于apache - Varnish Cache - 网页的初始缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14210099/

相关文章:

Python:Flask 缓存一段时间

caching - Varnish 在不同浏览器上的作用不同,为什么?

http - 如何让 Varnish 忽略而不是删除 cookie

ruby-on-rails - Apache with Passenger 不加载 Rails 应用程序

php默默地忽略本地主机上的包含,但不在外部服务器上

session - asp.net 中的 session 、缓存和配置文件有什么区别

c# - 由于缓存,Sqlite 第一次查询在 Windows XP 中花费的时间太长?

caching - Varnish 503 服务不可用

php - 使用 Apache 在我的 Windows 7 上安装 PHP GD

php - 404 服务器重定向,还是其他一些方法?