在Drupal7中插入、更新、删除节点时清除视图缓存

时间:2020-03-05 15:25:30  来源:igfitidea点击:

这个教程 描述了如何在插入、更新和删除节点时清除视图缓存。
如果我们想提高站点性能,那么视图缓存就是一种选择。

例如,假设有一个视图显示记录列表,并且它会偶尔更新。
然后我们可以通过为视图设置缓存来从缓存而不是服务器渲染视图数据。
我们可以在其设置页面的高级部分设置视图缓存。
Drupal默认支持基于时间的缓存。
我们可以在6天内缓存视图。
如果要在6天内缓存视图,则可以选择"自定义"选项并在"秒"文本框中填充秒数。

假设我们缓存了30分钟的视图。
然后,它将不会显示更新的数据,直到30分钟,即使新的节点添加到该视图。
它只在30分钟后显示更新的数据,因为视图被缓存了30分钟。
在这种情况下,用户无法在缓存视图中查看新数据。
所以我们需要在添加新节点时清除视图缓存。
这样,只有我们才能在视图中看到新的数据,而且数据也是从缓存中呈现的。

让我们看看如何在插入节点时清除视图缓存:

<?php
 /**
  * Imeplement hook_node_insert().
  */
 function kf_node_insert($node) {
   if ($node->type == 'tasks') {
     //clear views cache
     $viewsname = 'activity';
     cache_clear_all('ctools_export:views_view:' . $viewsname, 'cache_views', TRUE);
     cache_clear_all($viewsname, 'cache_views_data', TRUE);
   }
 }

类似地,在更新或者删除节点时,可以分别使用hook_node_update()和hook_node_delete()清除视图缓存。
现在我们可以看到页面的性能将得到提高。