gpt4 book ai didi

caching - silverstripe 静态发布者 - 受数据对象更改影响的页面

转载 作者:行者123 更新时间:2023-12-02 03:44:55 25 4
gpt4 key购买 nike

如果一个数据对象被编辑,是否有可能触发缓存的更新?例如,更新新闻数据对象应该更新显示这些新闻对象的页面缓存。

非常感谢,弗洛里安

最佳答案

这是我可以使用 StaticPublishQueue 做的事情模块。在您的 NewsDataObject.php 中:

function onAfterWrite() {
parent::onAfterWrite();

$url = array();
$pages = $this->Pages(); //has_many link to pages that include this DataObject
foreach($pages as $page) {
$pagesAffected = $page->pagesAffected();
if ($pagesAffected && count($pagesAffected) > 0) {
$urls = array_merge((array)$urls, (array)$pagesAffected);
}
}
URLArrayObject::add_urls($urls);
}

这会获取引用您的 DataObject 的每个页面,询问它的所有 URL 和任何相关页面的 URL(例如,引用该页面的虚拟页面),将所有 URL 编译成一个大数组,然后添加该数组到静态发布队列。队列将逐渐处理,直到所有受影响的页面都重新发布。

事件系统允许您在重新发布和重新发布的触发器之间添加一个抽象层,但对于一些简单的事情,您不一定需要使用它。相反,您可以直接将页面添加到队列中。 (您可能还想阅读此 blog post describing the StaticPublishQueue module )

关于caching - silverstripe 静态发布者 - 受数据对象更改影响的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17701235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com