我在 Symfony 中使用 twig 缓存标签。
如文档中所述,我使用updatedAt实体属性并设置缓存标签,如下所示:
{% "post-" ~ post.id ~ "-" ~ post.updatedAt %}
可以使用在帖子实体上设置新的 UpdatedAt 属性的 eventSubscriber 来处理帖子更新、类别删除或更新和评论删除。
但是如何删除帖子删除时缓存的帖子?
您可以通过注入
Symfony\Contracts\Cache\TagAwareCacheInterface
并使用 invalidateTags
方法从任何地方删除缓存。
例如:
class PostDeleteHandler
{
public function __construct(
private readonly TagAwareCacheInterface $twigCache,
) {
}
protected function deletePost (Post $post) : void {
...
$this->twigCache->invalidateTags(['post_delete_tag']);
}
//post_delete.html.twig
...
{% cache "post_delete;" tags('post_delete_tag') %}
{{ post.title }}
{% endcache %}
...