Magento操作Cookie 并且使用观察者&事件来禁用单页面全页缓存(EE FPC)

CookieCompliance:Magento 2 Cookie合规性插件 Cookie合规性 从下面列出的插件中派生出来,以允许用户指定有关由插件设置的cookie的其他详细信息:cookie名称,cookie域,exp。 时间,道路等等。 这样,用户可以通过指定Cookie名称来与同一域上的其他应用程序集成,以确保清除横幅的用户不会在其他应用程序上再次看到它(反之亦然) 原始插件 立即下载

Groupon(http://www.groupon.hk/)的首次访问会弹出一个框让客户输入电子邮件来订阅他们的最新咨询,只要提交表单或者点已经提交的按钮该框就会消失 并且以后访问都不会出现  大家应该见过  最近按照公司的要求需要在magento里面开发类似的效果。 首先明确这其中使用的原理是cookie 那magento该怎么操纵cookie呢 其实在core的model里面有一个cookie类 它简单地封装了php原本的setcookie函数 效果是一样的 只需要用两个functoin来get和set即可 示例代码如下

<?php
/**
* set cookie
* name and value are mandatory; other parameters are optional and can be set as null
* $period = cookie expire date in seconds
*/
Mage::getModel('core/cookie')--->set($name, $value, $period, $path, $domain, $secure, $httponly);
/**
* get cookie with a specific name
* $name = name of the cookie
*/
Mage::getModel('core/cookie')->get($name);
/**
* get all cookies as an array
*/
Mage::getModel('core/cookie')->get();
/**
* delete/remove cookie
* $name is mandatory; other parameters are optional and can be set to null
*/
Mage::getModel('core/cookie')->delete($name, $path, $domain, $secure, $httponly);
?>

其实setcookie在magento里面比较简单 但是后来我发现和我网站本身的EE FPC(企业版全页缓存)会发送冲突 使用了FPC后 页面会在不刷新缓存的情况下永远不会发生变化 (为此我调试了很久才发现有这个问题)那么cookie的功能就无法施展 看来只有在这个页面禁用FPC了 做法是创建自定义Observer和Event来完成。关于观察者事件和模块创建过程 大家可以参考我之前的文章。http://www.blog.youkuaiyun.com/ddjohn

首先在模块的config.xml里面创建自定义的观察者

 <events>
<controller_action_predispatch>
<observers>
<yip_setcookie_disable_groupsale>
<class>Yip_Setcookie_Model_Observer</class>
<method>processPreDispatch</method>
</yip_setcookie_disable_groupsale>
</observers>
</controller_action_predispatch>
</events>

然后Observer.php如下:

<?php
class Yip_Setcookie_Model_Observer
{
/**
* Disable FPC for group sale page
* used for event: controller_action_predispatch
*
* @param Varien_Event_Observer $observer
* @return Yip_Setcookie_Model_Observer
*/
public function processPreDispatch(Varien_Event_Observer $observer)
{
$action = $observer->getEvent()->getControllerAction();
$requestUri = $action->getRequest()->getRequestUri();

// Check to see if $requestUri is equel to group sale page uri
if(strstr($requestUri, "your-page-url"))
{
$request = $action->getRequest();
$cache = Mage::app()->getCacheInstance();

// Tell Magento to 'ban' the use of FPC for this request
$cache->banUse('full_page');
}

return $this;
}
}
这样做便在单个页面禁用了FPC 并且cookie可以使用自如了。cheers!
magento-ee-ce-encryption:Magento模块,为CE实现EE密码哈希 CE的EE密码散列 Magento模块,为CE实现EE密码哈希。 这对于从EE降级为CE的人们很有用。 EE使用与CE不同的哈希算法。 使用此模块,您将能够继续将CE的EE哈希密码使用。 立即下载

相关推荐

Comsol固体力学仿真﹣﹣受均匀内压的厚壁球壳弹塑性分析(加载卸载全流程)

COMSOL固体力学及结构力学仿真较少,故而查询了有关资料,才建立了如下模型。图4 加载卸载全历程中的冯米塞斯应力变化。该有限元模型是通过扫掠而得的结构化网格。图2 加载卸载全历程中的塑型区域变化。图3 加载卸载全历程中的位移应力变化。图6 关键节点第一,第三主应力分布。图5 关键节点应力场与塑性区分布。《弹塑性力学》大作业,记录一下。图1 球体的有限元网格模型。

weixin_62236383的博客 1487

Redis那些事

Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。

sunjie12311的博客 188

TMC步进电机驱动stealthChop

经过九九八十一难,芯片手册拜读了好多遍,找了好多资料,问了好多人使用TMC2660驱动步进电机终于成功了。最后的问题居然是硬件把管脚画错了,然后我又没有检查,哭。。。

那可真是太开心了的博客 4489

Redis复习总结

一文在手,redis问题不愁

weixin_45974176的博客 622

帆软报表JS导出避坑指南:如何正确处理sessionid和参数传递

本文深入探讨了帆软报表中通过JavaScript实现一键导出的关键技术,重点解析了如何正确获取并传递sessionid以确保会话不丢失,以及如何构造包含必要参数的导出URL。文章详细对比了预览后导出与直接URL导出两种方式的差异,并提供了从参数拼接、前端触发下载到高级场景(如SPA集成)的完整避坑指南,帮助开发者构建稳定可靠的自定义导出功能。

weixin_42522857的博客 163

拯救者R7000P(2021)装双系统Ubuntu20.04 解决联发科MT7921无线网卡在Ubuntu中不能联网

拯救者R7000P(2021)装双系统Ubuntu20.04/Ubuntu18.04 电脑配置:联想拯救者R7000P CPU:AMD R7-5800H GPU:RTX3060-6G 内存:16GB 固态:500G(原装)+500(加装) 1.做系统盘(本文以Ubuntu20.04为例) 1.下载Ubuntu20.04镜像 直接去Ubuntu官网或者一些国内的镜像去下载都可以,这里给出一个网址https://ubuntu.com/download/desktop,根据需要下载自己学要的Ubuntu版本,后缀

qq_41108639的博客 1万+

1.Redis支持的数据类型?

1.Redis支持的数据类型? String(字符串) 格式: set key value string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。 string类型是Redis最基本的数据类型,一个键最大能存储512MB。 Hash(哈希) 格式: hmset name key1 value1 key2 value2 Redis hash 是一个键值(key=&gt;value)对集合。 Redis hash是一个string类型的field和va

认真! 402

基于深度学习的生活垃圾检测与分类系统:YOLOv5、YOLOv6、YOLOv7与YOLOv8实现

本项目的目标是开发一个基于YOLO系列模型的生活垃圾检测与分类系统。数据集准备与标注:收集并标注生活垃圾图像数据集。模型训练:使用YOLOv5、YOLOv6、YOLOv7、YOLOv8等深度学习模型训练垃圾分类系统。UI界面设计:设计一个简洁的用户界面,支持图像或视频的上传与垃圾分类结果展示。实时垃圾检测与分类:通过摄像头进行实时垃圾检测和分类。结果展示与保存:展示检测结果,支持用户保存分类后的图像或视频。

YOLO 705

110道 Redis面试题及答案 (持续更新)

Redis面试题及答案 【最新版】Redis面试题大全,发现网上很多Redis面试题及答案整理都没有答案,所以花了很长时间搜集,本套Redis面试题大全 如果不背 Redis面试题的答案,肯定面试会挂! 这套Redis面试题大全,希望对大家有帮助哈~ 博主已将以下这些面试题整理成了一个面试手册,是PDF版的 1、Redis持久化策略选择 1、如果Redis中的数据完全丢弃也没有关系(如Redis完全用作DB层数据的cache),那么无论是单机,还是主从架构,都可以不进行任何持久化。 2、在单..

架构师专栏 5247

ReAct 智能体 Agent:架构解析与实践拓展

ReAct 智能体 Agent 凭借其推理与行动协同的独特架构,在众多人工智能应用场景中展现出巨大的潜力。从智能办公到教育辅导,从智能家居到工业物联网,ReAct 智能体通过精准推理和高效行动,为用户提供了更加智能、便捷的服务体验。然而,在实际应用过程中,仍面临工具调用安全、模型持续学习、多智能体协作管理以及性能优化等多方面的挑战。通过合理的策略和技术创新,如强化工具审核机制、构建持续学习框架、设计高效协作协议和采用性能优化手段,我们有望逐步克服这些挑战,进一步提升 ReAct 智能体的性能和可靠性。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1688

万字详解 PostgreSQL 的详细安装方式(Linux、Windows、macOS、Docker 全平台覆盖)

本文详细介绍了PostgreSQL在四大主流环境下的安装方法: Linux系统:针对Ubuntu/Debian和CentOS/RHEL系,分别提供APT/YUM仓库安装步骤,包括初始化配置和服务管理 Windows系统:通过图形化安装程序指导完成安装,包含组件选择、密码设置和pgAdmin配置 macOS系统:推荐使用Homebrew一键安装,支持Apple Silicon和Intel芯片 Docker容器:提供容器化部署方案(文中未展开) 文章强调安装前的版本选择、权限管理和存储规划,并针对各平台给出验证

数据知道的博客 4505

Redis面试题超详细(2024最新)

Redis面试题超详细(2024最新)

qq_36255346的博客 1413

【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比

文章目录2.1 使用VBA进行桌面软件开发2.1.1 VBA开发方式2.1.1 VBA代码的安全性2.2 使用DLL进行桌面软件开发2.2.1 DLL开发方式2.2.2 DLL功能的应用部署2.3 使用Add-in进行桌面软件开发2.4 使用ArcGIS Engine构建独立应用程序 对于桌面GIS应用来说,ArcGIS平台不仅提供了用于开发独立运行的GIS应用软件的二次开发工包ArcGIS Engine,还提供了对ArcGIS Deskop桌面软件进行扩展的开发的话,在开发个具体的GIS 行业应用软件时

智慧空间实验室 6510

Redis 分布式锁

使用过 Redis 分布式锁么,它是什么回事? 先拿 setnx 来争抢锁,抢到之后,再用 expire 给锁加一个过期时间防止锁忘记了 释放。 这时候对方会告诉你说你回答得不错,然后接着问如果在 setnx 之后执行 expire 之前进程意外 crash 或者要重启维护了,那会怎么样? 这时候你要给予惊讶的反馈:唉,是喔,这个锁就永远得不到释放了。紧接着你 需要抓一抓自己得脑袋,故作思考片刻,好像接下来的结果是你主动思考出来的, 然后回答:我记得 set 指令有非常复杂的参数,这个应该是可以同时把 se

qq_58849698的博客 130

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Redis

【Redis】持续更新...

w_k_x110的博客 1389

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【数据库】Redis是什么

Redis是什么

516

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【华为OD统一考试B卷 | 200分】 最小传输时延(C++ Java JavaScript )

因为 bgsave 会消耗比较长的时间,不够实时,在停机的时候会导致大量的数据丢失,需要 aof 来配合,在 redis 实例重启时,优先使用 aof 来恢复内存的状态,如果没有 aof 日志,就会使用 rdb 文件来恢复。网络模型,memcache 使用非阻塞的 IO 复用模型,redis 也是使用非阻塞的 IO 复用模型,但是 redis 还提供了一些非 KV 存储之外的排序,聚合功能,复杂的 CPU 计算,会阻塞整个 IO 调度,从这点上由于 redis 提供的功能较多,memcache 更快些。

m0_57042151的博客 240

【Redis缓存中间件必须要掌握的面试知识】

【Redis缓存中间件必须要掌握的面试知识】什么是Redis,Redis有哪些数据类型? Redis应用场景?Redis分布式锁?Redis事务?Redis缓存?分布式缓存?缓存淘汰策略,Redis键值过期策略?Redis双写一致性问题?Redis与Memcached的区别?Redis持久化策略?Redis集群的主从复制模型是怎样的?

Coder_ljw的博客 379

magento 全页缓存

全页缓存能极大的提高网页的响应速率,但magento社区的商用全页缓存工具都很贵,但是有一款免费的叫ezzoom,虽然免费但是功能强大,能够对产品、分类、特定模块进行缓存,还支持页面某些部分的动态加载 同时也因为是免费的,没有技术支持,推荐使用之前一定要研究下它的源码 1、使用方法 跟普通模块安装没啥区别,唯一不同的是安装后需要的网站入口文件index.php中的Mage::run(

clh604的专栏 2160

缓存之整页缓存

缓存介绍   缓存的功能是大型网站设计的一个很重要的部分,也是ASP.Net提供了的重要特性之一         缓存技术的优点是将用户访问频繁的数据以及需要耗费大量系统资源的数据储备在服务器内存中, 类似于一个临时的仓库,当用户请求使用这些数据时,系统直接将内存中的数据返回给用户, 避免在数据库中查询,从而大大提高应用程序的性能                  但是当用户第一次发送

寂寞的一只狗的博客 1109

php redis 实现全页缓存系统

php redis 实现全页缓存系统 之前的一个项目说的一个功能,需要在后台预先存入某个页面信息放到数据库,比如app的注册协议,用户协议,这种.然后在写成一个php页面,app在调用接口的时候访问这个页面.当时我就发现一个问题,这些协议往往几个月才会修改一次,而每一次用户查看这些协议的时候,nginx都会重新从数据库读取文件,速度会很慢慢了. 如下图m_about.php是我生成的数据页, ...

南浦 4172

面试大咖说:如何保证 redis 中的数据都是热点数据?

案例: MySQL 里有 2000w 数据,redis 中只存 20w 的数据,redis如何保障缓存中存放的是热点数据;另外再给大家普及一下redis使用场景。 TODO: 1、如何保证 redis中的数据都是热点数据? redis有数据过期时间时间,以及数据容量达到阈值时,根据置换策略,淘汰指定的数据。 2、Redis 有哪些适合的场景? 1)会话缓存(Session Cache) 最常用的一种使用 Redis 的情景是会话缓存(session cache)。用 Red...

撸起袖子加油干 4142

Redis系列(二)--缓存设计(整表缓存以及排行榜缓存方案实现)

抱歉,其实这篇应该几天前就出的,不过在这个项目中的lucene加载出bug了(虽然还没解决,但缓存的先记录下来,发出给大家)。今天是两个缓存方案的介绍,排行榜缓存以及整表缓存!!!

Jack__Frost的博客 1万+

Redis知识总结

Redis介绍 Redis 本质上一个 Key/Value 数据库,与 Memcached类似的 NoSQL 型数据库,但是他的数据可以持久化的保存在磁盘上,解决了服务重启后数据不丢失的问题,他的值可以是 string(字符串)、list(列表)、sets(集合)或者是ordered sets(被排序的集合),所有的数据类型都具有push/pop、 add/remove、执行服务端的并集、交集、

会飞的狼 717

使用redis实现页面缓存

我们要缓存的就是形式如下面的url http://test.com/shwoItem?item=itemX 设计方案 第一个域,是zset类型的------key是viewed:userSessionid 存放的是商品id与用户查看此商品时的timestamp 第二个域,是zset类型的------可以是viewed: member是商品id(全局范围内),score是商品

程序员小董的专栏 1万+
上一篇: 关于prototype和使用多个JQuery插件的冲突问题
下一篇: Call to a member function addToChildGroup() on a non-object in app/code/core/Mage/Core/Block/Abstrac
ddjohn
博客等级 码龄17年 36粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值