我已经使用 Apache Web 服务器安装了 Varnish 缓存并正确配置了它们。它工作正常,我现在可以通过 Varnish Cache 访问我的网页。
varnish 的默认行为是存储 Web 服务器提供的页面的副本。下次请求同一页面时,Varnish 将提供副本,而不是从 Apache 服务器请求页面。
现在我的问题是:是否可以在设置 Varnish 缓存后最初缓存我的整个网站,而不需要访问页面然后将其存储在缓存中?这是因为,在设置 Varnish 之后,缓存最初是空的,并且需要访问一个页面才能在缓存上可用。是否可以在无需手动访问每个页面的情况下完成此操作?
最佳答案
您正在寻找的是一种预热缓存的方法。您可以使用 varnishreplay
或 Web crawler ,例如 Wget 或 HTTrack 来浏览您的网站。或者,如果您有 sitemap您可以使用它作为起点,并通过循环遍历它并使用例如在页面上发出请求来预热缓存。 curl 或 wget。
使用 varnishreplay 要求您首先运行 varnishlog 并收集流量日志,然后才能使用它来回放流量并预热缓存。
Wget、HTTrack 等可以指向您的主页,它们会爬行您的网站。不过,根据站点的大小和性质,这可能不切实际(例如,如果您广泛使用 Ajax)。
除非您的页面需要很长时间才能从后端服务器(即 Apache)加载,否则我不会太担心缓存的预热。如果缓存内容的 TTL 足够高,大多数访问者无论如何都只会收到缓存内容。
关于apache - Varnish Cache - 网页的初始缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14210099/