如何使用Varish Edge Side Includes作为侧边栏?

时间:2013-01-21 作者:user26312

我在这里读过这篇文章,但不知道从哪里开始。https://www.varnish-cache.org/trac/wiki/ESIfeatures

编辑澄清:我确实想使用全页缓存,但一旦我们缓存了文章页面,它可以在缓存中停留一天左右,或者如果有什么东西将其推出。但我希望侧边栏以更快的速度刷新

1 个回复
最合适的回答,由SO网友:timbroder 整理而成

您可以执行以下操作:

如果你有一个叫做“侧边栏”的侧边栏

<?php
if ( !dynamic_sidebar("Sidebar") ) :
endif;
?>
将其包装在ESI标记中,一个用于ESI未启用,另一个用于:

<esi:remove>
  <?php
  if ( !function_exists(\'dynamic_sidebar\') || !dynamic_sidebar("Sidebar") ) :
  endif;
  ?>
</esi:remove>
<!--esi
<esi:include src="/wp-content/plugins/myplugin/esihandler.php"/>
-->
然后,创建ESI将从中提取的端点,称之为esihandler。php:

<?php
$cwd = getcwd();
$path = substr($cwd, 0, strpos($cwd, \'wp-content/\'));
require $path . \'wp-blog-header.php\';

if ( !dynamic_sidebar("Sidebar") ) :
endif; 
最后,在sub vlc\\U fetch调用中更新varnish配置以获得适当的缓存时间:

if (req.url ~ "esihandler.php") {
  set beresp.ttl = 10m;
}
else {
  set beresp.do_esi = true;
  set beresp.ttl = 1440m;
}

结束

相关推荐

Multisite behind Varnish

我正在尝试将varnish与wp 3.0.5网站(Multisite)一起使用,当我访问varnish URL时,我收到以下消息:Multisite only works without the port number in the URL. 我是否需要自定义VCL来实现此功能?我正在为其他工作正常的wordpress站点使用相同的后端配置。。如果我需要在serverfault上询问此问题,请告诉我,我会在那里询问。