2

我想实现全页缓存,但目前我有 1 个问题要处理。

我们使用基于 Zend 和 Varien 库的电子商务系统:Magento 电子商务社区版。

我能够缓存输出,唯一的问题是,如何处理以下情况:

用户来到网站,然后转到目录/产品并将一些产品添加到购物车,然后返回目录。

问题是当他将产品添加到购物车时,有一些特定的块可能需要更新。所以我可以禁用缓存发布请求,但是我如何更新某些特定的块或如何实现这个“占位符”,它将被更新?我想可能有一些“最佳实践”或缓存模式。

PS致magento家伙:请不要提醒我有关企业版和付费模块的信息。

4

4 回答 4

4

使用 Magento 社区版可以通过三种方式获得更好的性能:

1.使用清漆

Varnish (https://www.varnish-cache.org/) 称自己为“Web 应用程序加速器”,是一个透明的反向代理。如果您了解 Squid,那么您就会有一个模糊的想法 - Varnish 就像 Squid,只是更聪明、更快。:)

使用 Varnish,您可以实现自己的全站点缓存,根据我的经验,这甚至比 Magento 企业版的全页面缓存快得多。

但是,Varnish 不是标准工具,因此如果您将 Magento 安装托管在一个普通的 PHP 网络空间包中,您可能无法安装/使用它。要安装和使用 Varnish,您需要(root)访问您的系统或提供者,它为您提供 Varnish 服务。那里有一些 Magento 托管服务提供商,它们提供特殊的 Magento 托管服务,包括 Varnish 等服务。

Varnish 本身缓存所有类型的静态文件和页面,例如整个产品视图页面。因此,如果您开始使用 Varnish,您需要调整您的 Magento,即创建一个特定的模块,将您的页面分为静态和动态内容。

例如:产品视图是一个页面,其中包含动态部件/块的占位符,例如购物车小部件。静态内容(页面)将由 Varnish 交付,动态内容将由客户端(浏览器)加载,对您的应用程序服务器(Magento)进行 AJAX 调用。

因此,您的应用程序服务器将只调用这些动态块和结帐/客户登录,您可以节省大量性能。

Varnish 已经有一些 Magento 模块,例如http://www.magentocommerce.com/magento-connect/pagecache-powered-by-varnish.html - 只是谷歌的“Varnish Magento”,你会找到足够的信息。

2.构建自己的缓存系统

相反,使用 Varnish,您可以构建自己的简单(且愚蠢)的缓存系统。没有什么比纯静态 HTML 页面更快的了。所以我能想到的最简单的缓存类型(并且我自己已经实现了)是一个愚蠢的 cronjob,它定期爬取你的商店,将产品页面存储为静态 HTML 页面。动态内容(同样是购物车小部件,...)应替换为占位符。

现在您可以将这些静态 HTML 页面交付给正在快速浏览您的商店的客户——因为它们是静态的。必须再次使用对系统的 AJAX 调用在客户端(浏览器)上替换动态内容。

愚蠢,但简单且工作正常 - 只要您没有数千种产品(爬行会花费太长时间)。

3. 不要使用 Magento

只是个玩笑,... :) 但是,Magento 往往很慢。

对于 Magento 性能优化也非常有用:The Magento Best Practice for Performance and Scalibilty Whitepaper。即使是企业版,一些技巧对于社区版也非常有用。

于 2012-03-02T11:22:43.907 回答
2

用于 magento 的开源全页缓存

https://github.com/ezapps/Zoom-Magento-FPC

工作速度非常快,而且是免费的。在 magento commerce 上,您有类似的扩展程序,每个域收费 500 美元

于 2012-03-30T09:44:45.677 回答
0

我认为您需要输入一个识别 ID,当客户将产品添加到购物车时它会发生变化

    protected function _construct()
{
$this->addData(array(
'cache_lifetime' => 3600,
'cache_tags'     => array(Mage_Catalog_Model_Product::CACHE_TAG),
'cache_key'      => $this->getProduct()->getId(),
));
}

添加产品时,cache_key 的值需要更改。可以试试吗??

于 2012-03-02T08:28:54.680 回答
0

这个问题 - magento 开源全页缓存- 处理该领域中您可用的一些问题和模块。

整页缓存出现问题的可能性很大。magento 在将产品添加到购物车等之前会进行检查,但是您向用户显示的内容可能是错误的,这可能包括定价和其他重要领域。

于 2012-11-08T22:11:29.967 回答