@@ -4,7 +4,6 @@ import com.yunhai.cms.config.CacheNames;
|
||||
import com.yunhai.cms.event.ArticleChangedEvent;
|
||||
import com.yunhai.cms.event.ArticlePublishedEvent;
|
||||
import com.yunhai.cms.event.SiteContentChangedEvent;
|
||||
import com.yunhai.cms.svcitem.event.ServiceItemChangedEvent;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.cache.Cache;
|
||||
@@ -45,32 +44,8 @@ public class PortalCacheEvictListener {
|
||||
clear(CacheNames.LIST);
|
||||
}
|
||||
|
||||
/**
|
||||
* 事项域变更(事项库 §3.6):精确失效 cms:svcItem——itemId 非空 evict 指南页模型,
|
||||
* filters:{siteId} 始终失效;不动 cms:article/cms:list/cms:site(事项不影响文章与站点快照)。
|
||||
*/
|
||||
/**
|
||||
* 事项域变更(事项库 §3.6):失效 cms:svcItem。
|
||||
* scope=item(事项增改发删排序)走精确失效:itemId 非空 evict 指南页模型,另 evict filters:{siteId};
|
||||
* scope=dict/dept(字典改名停用、部门名同步)影响所有已缓存指南页的展示名快照(categoryName/objectName/deptName),
|
||||
* 而 itemId 缓存键不带站点维度、无法按站精确失效 → 整缓存 clear(与本监听器 cms:list/cms:site
|
||||
* 同款规模论证:单实例 Caffeine、站点 ≤20,clear 成本可忽略)。不动 cms:article/cms:list/cms:site。
|
||||
*/
|
||||
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT, fallbackExecution = true)
|
||||
public void onServiceItemChanged(ServiceItemChangedEvent event) {
|
||||
Cache cache = cacheManager.getCache(CacheNames.SERVICE_ITEM);
|
||||
if (cache == null) {
|
||||
return;
|
||||
}
|
||||
if (!"item".equals(event.getScope())) {
|
||||
cache.clear();
|
||||
return;
|
||||
}
|
||||
if (event.getItemId() != null) {
|
||||
cache.evict(event.getItemId());
|
||||
}
|
||||
cache.evict("filters:" + event.getSiteId());
|
||||
}
|
||||
// 事项域缓存(cms:svcItem):V2.0 拆分后无本地写事件,remote 模式靠 TTL 过期
|
||||
// (办事大厅变更后最多滞后 5min);ServiceItemChangedEvent 已随事项管理能力迁出。
|
||||
|
||||
private void evictArticle(Integer articleId) {
|
||||
Cache cache = cacheManager.getCache(CacheNames.ARTICLE);
|
||||
|
||||
Reference in New Issue
Block a user