实战给AW_Blog插件添加缓存(续)

2023-12-11 14:58
文章标签 实战 插件 缓存 blog aw

本文主要是介绍实战给AW_Blog插件添加缓存(续),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

两年前的文章(实战给AW_Blog插件添加缓存)描述了一个Block Cache的实例,最近发现代码其实写的有点累赘,后台保存时自动触发刷新缓存并不需要自己去写刷新的动作,系统原生的Model继承类Mage_Core_Model_Abstract里已经有实现这个动作的代码,只需要简单的配置下变量就能实现。修改后的方案如下(Block类的所需修改代码不变)

打开AW_Blog_Model_Post这个文件,在头部定义一个常量,再定义一个变量

    const CACHE_TAG       = 'aw_blog';protected $_cacheTag         = 'aw_blog';

结束,就这么简单,打开Mage_Core_Model_Abstract文件来看下为什么

    protected function _afterSave(){$this->cleanModelCache();Mage::dispatchEvent('model_save_after', array('object'=>$this));Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());return $this;}

    public function cleanModelCache(){$tags = $this->getCacheTags();if ($tags !== false) {Mage::app()->cleanCache($tags);}return $this;}

    public function getCacheTags(){$tags = false;if ($this->_cacheTag) {if ($this->_cacheTag === true) {$tags = array();} else {if (is_array($this->_cacheTag)) {$tags = $this->_cacheTag;} else {$tags = array($this->_cacheTag);}$idTags = $this->getCacheIdTags();if ($idTags) {$tags = array_merge($tags, $idTags);}}}return $tags;}


从上往下依次看,当Model对象保存完毕时会触发cleanModelCache,cleanModelCache里去根据getCacheTags返回的值去定向刷新tags针对的cache,这样,之前定义的变量$_cacheTag的值所对应的cache就被成功刷新了。如果代码看的不是很明白的话,可以把getCacheTags的返回值输出来看下

2013-10-27T14:02:59+00:00 DEBUG (7): Array
(
    [0] => aw_blog
    [1] => aw_blog_2
)

数组里的两个元素就是刷新缓存时所指定的cache tag


这篇关于实战给AW_Blog插件添加缓存(续)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/481098

相关文章

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

Apache Ignite缓存基本操作实例详解

《ApacheIgnite缓存基本操作实例详解》文章介绍了ApacheIgnite中IgniteCache的基本操作,涵盖缓存获取、动态创建、销毁、原子及条件更新、异步执行,强调线程池注意事项,避免... 目录一、获取缓存实例(Getting an Instance of a Cache)示例代码:二、动态

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Spring Boot3.0新特性全面解析与应用实战

《SpringBoot3.0新特性全面解析与应用实战》SpringBoot3.0作为Spring生态系统的一个重要里程碑,带来了众多令人兴奋的新特性和改进,本文将深入解析SpringBoot3.0的... 目录核心变化概览Java版本要求提升迁移至Jakarta EE重要新特性详解1. Native Ima

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

SpringBoot集成MyBatis实现SQL拦截器的实战指南

《SpringBoot集成MyBatis实现SQL拦截器的实战指南》这篇文章主要为大家详细介绍了SpringBoot集成MyBatis实现SQL拦截器的相关知识,文中的示例代码讲解详细,有需要的小伙伴... 目录一、为什么需要SQL拦截器?二、MyBATis拦截器基础2.1 核心接口:Interceptor

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习