Caching 我可以用清漆来完成吗?

Caching 我可以用清漆来完成吗?,caching,nginx,varnish,esi,Caching,Nginx,Varnish,Esi,我有一个网站,通过RSS从许多不同的网站获取新闻文章。脚本将这些文章添加到mysql数据库中。我在许多页面上向观众显示每页10篇文章 目前,我正在缓存完整页面,并在每次更新脚本向数据库添加新文章时清除缓存。它很快,但效率不高。缓存的页面寿命只有几分钟,即使文章本身可以缓存更长的时间 我可以用清漆在缓存中存储单个物品吗?因此,生成的每个页面都会有指向文章的链接/指针/引用,而不是文章本身。然后,我可以在短时间内缓存这些页面,而在更长时间内缓存文章 我将如何在Varnish或任何其他缓存机制上执行此

我有一个网站,通过RSS从许多不同的网站获取新闻文章。脚本将这些文章添加到mysql数据库中。我在许多页面上向观众显示每页10篇文章

目前,我正在缓存完整页面,并在每次更新脚本向数据库添加新文章时清除缓存。它很快,但效率不高。缓存的页面寿命只有几分钟,即使文章本身可以缓存更长的时间

我可以用清漆在缓存中存储单个物品吗?因此,生成的每个页面都会有指向文章的链接/指针/引用,而不是文章本身。然后,我可以在短时间内缓存这些页面,而在更长时间内缓存文章

我将如何在Varnish或任何其他缓存机制上执行此操作?这是否会比缓存命中时的整页缓存性能更差/相同

我使用的是Ubuntu 12.04和nginx

谢谢

您想要使用。基本上,您的页面使用的ESI链接如下:

<div class="articles">
  <esi:include src="/path/to/article/1"/>
  <esi:include src="/path/to/article/2"/>
  <esi:include src="/path/to/article/3"/>
</div>
或在清漆4中:

sub vcl_backend_response {
  set beresp.do_esi = true;
}

当上述代码通过Varnish时,Varnish将用URL的内容替换每个
esi:include
。您可以将页面本身缓存几分钟,将每篇文章缓存几天。

非常感谢您的回复!“/path/to/article/1”类似于“get article.php?id=1”,这样可以吗?Varnish不会命中那个文件,如果它已经在缓存中,我想。每页有一打这样的ESI不会比加载一个缓存页面和已经在其中的文章慢多少?正确,那个url是可以的。Varnish不会并行化请求,因此每个ESI include都会为未缓存的页面增加少量加载时间,具体取决于您的后端(可能只有几毫秒)。不过,如果你缓存这些页面,那也没什么大不了的。非常感谢!现在将添加Varnish,并将其与fastcgi缓存进行基准测试。
sub vcl_backend_response {
  set beresp.do_esi = true;
}