Magento缓存讲解之自定义缓存

本文详细讲解如何利用Magento的缓存机制和自定义扩展,为不同客户生成特定产品的个性化列表,同时保持页面加载速度和用户体验。通过创建自定义缓存逻辑,实现了动态内容的缓存,确保了每个客户都能看到符合其偏好的产品,且在产品更新时能及时反映变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Magento缓存讲解之自定义缓存

开发者都非常熟悉的 Magento缓存,都配备了非常完善的缓存管理机制。

众所周知,在 web领域中缓存的重要性,简单的说它可以使浏览者尽可能快地看到他们想看到的页面,一个载入速度非常迅速的页面对客户体验也是非常好的,因此也可能会直接或间接地增加您店铺的业绩。

Magento 缓存(FPC),它的位置在管理页面 system– configuration – cache management。

Magento缓存讲解之自定义缓存

它可以完全缓存静态页面和动态页面的绝大部分内容。但同样,当你的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/products
HOMEPAGE_PRODUCTS
          Rikku_Mymodule_Model_PageCache_Container_Homepageproducts
          86400
        
    
  

你可以看到,我们定义了一个 placeholder,将我们的块MyModule/products 分别用我们自己的类缓存:

<?php

class 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,那么当产品发生变化时,一个新的版本的缓存将被生成,那么前台,我们的客户也就可以看到产品的变化了。
内容概要:本文针对国内加密货币市场预测研究较少的现状,采用BP神经网络构建了CCi30指数预测模型。研究选取2018年3月1日至2019年3月26日共391天的数据作为样本,通过“试凑法”确定最优隐结点数目,建立三层BP神经网络模型对CCi30指数收盘价进行预测。论文详细介绍了数据预处理、模型构建、训练及评估过程,包括数据归一化、特征工程、模型架构设计(如输入层、隐藏层、输出层)、模型编译与训练、模型评估(如RMSE、MAE计算)以及结果可视化。研究表明,该模型在短期内能较准确地预测指数变化趋势。此外,文章还讨论了隐层节点数的优化方法及其对预测性能的影响,并提出了若干改进建议,如引入更多技术指标、优化模型架构、尝试其他时序模型等。 适合人群:对加密货币市场预测感兴趣的研究人员、投资者及具备一定编程基础的数据分析师。 使用场景及目标:①为加密货币市场投资者提供一种新的预测工具和方法;②帮助研究人员理解BP神经网络在时间序列预测中的应用;③为后续研究提供改进方向,如数据增强、模型优化、特征工程等。 其他说明:尽管该模型在短期内表现出良好的预测性能,但仍存在一定局限性,如样本量较小、未考虑外部因素影响等。因此,在实际应用中需谨慎对待模型预测结果,并结合其他分析工具共同决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值