Magento缓存讲解之自定义缓存
来源:互联网 发布:厦门市大数据管理中心 编辑:程序博客网 时间:2024/06/03 17:44
Magento缓存讲解之自定义缓存
开发者都非常熟悉的 Magento缓存,都配备了非常完善的缓存管理机制。众所周知,在 web领域中缓存的重要性,简单的说它可以使浏览者尽可能快地看到他们想看到的页面,一个载入速度非常迅速的页面对客户体验也是非常好的,因此也可能会直接或间接地增加您店铺的业绩。
Magento 缓存(FPC),它的位置在管理页面 system– configuration – cache management。
它可以完全缓存静态页面和动态页面的绝大部分内容。但同样,当你的Magento 店铺需要特别的定制,你可能就需要扩展 Magento 的功能。作为电子商务开源程序提供商,Magento的其中一项重要业务就是 Magento Extension的出售。所以在这种情况下,您的自定义扩展就会在缓存中形成一个例外。
我想你懂我的意思。让我们来举个例子吧。比如,我们需要一个模块,它能够按照规律生成一个小型的产品列表,当然这是为不同浏览者的浏览爱好所定制的。这个块显示在主页上,那么我们就需要到管理页面选择CMS 主页,并插入下面的内容:
{{block type="mymodule/products" template="mymodule/products.phtml"}}
我们创建了块类,生成为每个客户收集的喜好特定产品的特殊逻辑(前提是该用户已经 拥有一个 ID并登陆)。那么你会认为这很容易,只要关闭缓存即可。但是,没了缓存,我们的页面载入速度势必会大打折扣,恐怕这都是你我所不愿意看到的。我们希望的是,即使这些是动态的,我们也要进行缓存,不仅仅包括我们的特殊模块,还包括所有客户将看到同样的东西。
听起来有些难,但这个难题还是被我们解决了。幸运的是 Magento的缓存机制是非常灵活的,有一个功能,我们可以称之为“hole”或者“placeholder”。它提供了一个能够在页面上定义将所有特殊东西缓存的逻辑,包括除默认部分以外不同的模块。
还是这个例子,让我们创建一个叫 cache.xml的文件,在这个模块的 etc 目录下:(和 config.xml 平行)
<?xml version="1.0" encoding="UTF-8"?> mymodule/productsHOMEPAGE_PRODUCTS Rikku_Mymodule_Model_PageCache_Container_Homepageproducts 86400
你可以看到,我们定义了一个 placeholder,将我们的块MyModule/products 分别用我们自己的类缓存:
<?phpclass Rikku_Mymodule_Model_PageCache_Container_Homepageproducts extends Enterprise_PageCache_Model_Container_Abstract { protected function _getIdentifier() { return $this->_getCookieValue(Enterprise_PageCache_Model_Cookie::COOKIE_CUSTOMER, ''); } protected function _getCacheId() { return 'HOMEPAGE_PRODUCTS' . md5($this->_placeholder->getAttribute('cache_id') . $this->_getIdentifier()); } protected function _renderBlock() { $blockClass = $this->_placeholder->getAttribute('block'); $template = $this->_placeholder->getAttribute('template'); $block = new $blockClass; $block->setTemplate($template); return $block->toHtml(); }}
详细地说明一下这个类:
protected function_renderBlock
该方法定义了我们的逻辑块中的缓存。实际上,我们这么做是告诉Magento ,我们定义的块、类、模板是默认的。
protected function_getCacheId
这是个有趣的方法,它定义了缓存的 ID,这将使缓存对特殊页一页一缓存。那么也到了关键的地方,因为我们不同的客户将看到不同的页面,那么也就是为每个缓存加上一个客户的ID,因此,我们设定唯一的前缀 HOMEPAGE_PRODUCTS ,然后调用方法,同时这也为我们区分不同的缓存 ID。
protected function_geIdentifier
这个地方,我们简单地检索了下cookie。
这样就可以了。现在,每个不同的客户都将看到属于他们的产品列表,并为缓存的页面做了一个版本号。
但想到这点,所以才有了这个方法,您可以根据您的网店实际情况改写它,赋予每个缓存不同的 ID,那么当产品发生变化时,一个新的版本的缓存将被生成,那么前台,我们的客户也就可以看到产品的变化了。重要的提示:我们的产品列表实际上被完全缓存了,这意味着,客户虽然可以看到不同的产品列表,但我们增加产品或变更产品时,页面不会跟着变动。
- Magento缓存讲解之自定义缓存
- magento -- 给Magento提速之缓存上的探索
- magento的缓存问题!!!
- magento配置缓存服务器
- magento 全页缓存
- magento memcache缓存配置
- magento 输出缓存
- Magento memcache缓存配置
- IT忍者神龟之全面讲解Hibernate缓存
- iOS经典讲解之清除缓存文件
- 缓存、缓存框架、缓存算法讲解
- 自定义缓存
- 自定义缓存
- 增强magento缓存机制-------magento提速方法
- magento自己带有缓存机制
- Nginx+fastcgi_cache 配置magento缓存
- 将Magento缓存放到内存
- Magento Block的缓存机制
- select模型
- 如何成为 Python 高手
- 工作时应该听什么音乐?
- java高级工程师------struts的知识重点
- S3C2440中断
- Magento缓存讲解之自定义缓存
- hdu2144
- USACO:Humble Numbers
- LINUX系统调用的添加(2.6.36版本)
- hdu1020(Encoding)
- 功能强大的命令行工具Powershell
- Quick Benchmark: Gzip vs Bzip2 vs LZMA vs XZ vs LZ4 vs LZ
- poj1065(木棍加工贪心)
- URL编码问题汇总