Magento 1.9.2.3+LiteSpeed Cache+SM-Maxshop主题添加商品至购物车失败求助
解决Magento 1.9.2.3中LiteSpeed Cache导致添加购物车失效的问题
我之前处理过不少Magento 1.x搭配LiteSpeed Cache的类似案例,你的情况确实是缓存干扰了购物车提交的动态交互——完全可以把添加购物车的相关请求/区域排除在缓存范围之外,结合你用的版本(Magento 1.9.2.3、LiteSpeed Cache 1.3.6、SM-Maxshop 1.1.0),给你几个具体的解决方向:
1. 通过LSCache后台配置排除购物车提交路由
这是最直接的方法,把添加购物车的请求路由排除在缓存规则外:
- 登录Magento后台,进入
System > Configuration > LiteSpeed Cache - 切换到Exclude标签页,找到Exclude Routes选项
- 添加Magento默认的添加购物车路由:
checkout/cart/add,一行一个 - 注意:SM-Maxshop主题大概率用了自定义Ajax购物车,你需要打开浏览器开发者工具(F12),切换到Network标签,点击添加购物车按钮,查看实际发起的请求URL,把对应的自定义路由(比如常见的
ajaxcart/add)也添加到排除列表里
2. 局部排除:仅让添加购物车按钮区域不缓存
如果不想让整个商品详情页失去缓存优势,只想排除按钮所在的动态区域,可以用LiteSpeed的ESI功能:
- 找到SM-Maxshop主题的商品详情页模板文件(一般是
app/design/frontend/SM/Maxshop/template/catalog/product/view/addtocart.phtml) - 用LSCache的ESI标签包裹添加购物车按钮的代码块:
这样这个区域会被标记为非缓存区域,每次请求都会动态生成,不影响页面其他部分的缓存效果<?php echo $this->helper('litespeedcache')->esiStart('cart_add_btn', ['cacheable' => false]); ?> <!-- 这里保留原来的添加购物车按钮的HTML/PHP代码 --> <?php echo $this->helper('litespeedcache')->esiEnd(); ?>
3. 检查Cookie排除规则(可选)
有时候会话Cookie会导致缓存逻辑异常,你可以在LSCache配置的Cookie Exclude里,确保frontend(Magento 1.x的前端会话Cookie)已经被添加。不过这个操作会降低缓存命中率,所以优先用前两种方法,只有前两种无效时再尝试。
4. 测试与验证
- 配置完成后,一定要点击LSCache后台的Purge All清空现有缓存
- 刷新商品详情页,测试添加购物车功能是否恢复正常
- 如果仍有问题,检查浏览器控制台的JS报错——如果是主题Ajax购物车的JS被缓存干扰,可以在LSCache的Exclude JS里添加主题购物车相关的JS文件路径(比如
js/sm/ajaxcart.js,根据实际文件调整)
内容的提问来源于stack exchange,提问作者Morf
相关产品推荐
相关产品推荐

