quinninteractive/silverstripe-clearkey

Silverstripe模块,用于管理部分缓存失效

安装: 877

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 3

分支: 0

公开问题: 0

类型:silverstripe-vendormodule

1.0.0 2022-12-20 00:46 UTC

This package is auto-updated.

Last update: 2024-09-21 23:17:49 UTC


README

当使用Silverstripe的部分缓存时,你使用的键通常可以分为两种类型。

  1. 缓存 标识符 键,有助于区分不同的缓存块
  2. 缓存 清除 键,告诉我们何时一个块已过时

以这个部分缓存块为例

<% cached 'Promo', $ID, $Link, $Promo.LastEdited, $List('SiteTree').max('LastEdited'), $List('SiteTree').count() %>
...
<% end_cached %>

这些 标识符 键有助于区分不同的促销活动

  • 'Promo'
  • $ID
  • $Link

这些 清除 键有助于告诉我们内容何时过时

  • Promo.LastEdited
  • $List('SiteTree').max('LastEdited')
  • $List('SiteTree').count()

部分缓存对于 标识符 键表现良好,但必须在每次页面加载时与数据库交互来计算一些 清除 键,特别是聚合键。

ClearKey通过允许你在相关数据对象保存时管理过时数据的清除计算,而不是在每次页面加载时进行,从而解决了这个问题。使用ClearKey,示例缓存块可能看起来像这样

<% cached $ClearKey('Promo'), $ID, $Link %>
...
<% end_cached %>

您可以使用相应的配置定义清除键,以描述哪些被更新的类应该使每个键无效。在下面的示例中,每当保存 PromoSiteTree 时,都会使 Promo 键无效。

---
Name: clearkey-config
After:
  - '#corecache'
---
QuinnInteractive\ClearKey\Extensions\ClearKeyExtension:
  invalidators:
    Promo:
      - SilverStripe\App\Model\Promo
      - SilverStripe\CMS\Model\SiteTree
    AnotherKey:
      - SilverStripe\App\Model\Something
      - SilverStripe\CMS\Model\Etc

当前版本:1.0.0