2012-03-02 88 views
2

我想實現整頁緩存,但目前我有1個問題需要處理。整頁緩存,塊更新

我們使用基於Zend和Varien圖書館的電子商務系統:Magento電子商務社區版。

我能夠緩存輸出,唯一的問題是,如何應對以下情況:

用戶來到網站,然後進入目錄/產品,並增加了一些產品到購物車,然後回到目錄。

問題是,當他將產品添加到購物車時,有一些特定的塊可能需要更新。所以我可以禁用緩存後的請求,但我怎麼可以更新一些特定的塊或如何實現這個「佔位符」,這將被更新?我想可能有一些「最佳實踐」或緩存模式。

P.S.對於magento傢伙:請不要提醒我關於企業版和支付模塊。

+0

獲取完整頁面緩存權利很複雜且需要很多工作。投資現有模塊FWIW可能會便宜得多。我建議重新考慮你的優先事項。 – Vinai 2012-03-02 09:58:57

+0

如果我通過僅緩存cms/catalog/product頁面來實現這種緩存,只有當客戶註銷並且他沒有像購物車或whishlist或其他任何行爲一樣。 – 2012-03-02 11:26:23

回答

4

有三種方法來獲得使用Magento的社區版更好的性能:

1.使用清漆

光油(https://www.varnish-cache.org/)調用自身「網絡應用加速器」,是一個透明的反向代理。如果你知道魷魚,比你有一個模糊的想法 - 清漆就像魷魚,只有更聰明,更快。 :)

使用Varnish,您可以實現您自己的Full Site Cache,根據我的經驗,它甚至可以比Magento Enterprise Edition的Full Page Cache更快。

但是,Varnish不是一個標準的工具,所以如果你只是在普通的PHP webspace包中安裝Magento安裝,你可能無法安裝/使用它。要安裝和使用Varnish,您需要擁有(root)訪問您的系統或提供者的權限,這可以爲您提供Varnish作爲服務。有一些Magento託管服務提供商,它提供特殊的Magento託管服務,包括Varnish服務。

清漆本身緩存所有類型的靜態文件和頁面,整個產品視圖頁面。因此,如果您開始使用Varnish,您需要調整您的Magento,即創建一個特定的模塊,將您的網頁分爲靜態和動態內容。

例如:產品視圖是一個包含dymaic零件/塊的佔位符的頁面,如購物車小部件。靜態內容(頁面)將由Varnish交付,動態內容將由客戶端(瀏覽器)通過AJAX調用加載到您的應用程序服務器(Magento)。

因此,您的應用程序服務器只會調用那些動態塊和結帳/客戶登錄,您可以節省大量的性能。

Varnish已經有一些Magento模塊,比如http://www.magentocommerce.com/magento-connect/pagecache-powered-by-varnish.html - 只是谷歌的「Varnish Magento」,你會發現足夠的信息。

2.建立自己的cachesystem

除了使用清漆,你可以建立自己的,簡單的(愚蠢)高速緩存系統。沒有什麼比靜態HTML頁面更快。因此,我能想到的最簡單的緩存類型(並且自己已經實現)是一個愚蠢的cronjob,它定期抓取您的商店,將產品頁面存儲爲靜態HTML頁面。動態內容(再次購物車小部件,...)應該用佔位符替換。

現在您可以將這些靜態HTML頁面提供給客戶端,客戶端可以非常快速地瀏覽您的商店 - 因爲它們是靜態的。動態內容必須在客戶端(瀏覽器)上再次使用AJAX調用來替換您的系統。

很愚蠢,但很簡單,工作正常 - 只要你沒有成千上萬的產品(爬行需要很長時間)。

3.不要使用Magento的

只是一個玩笑,... :)但是,是的,Magento的趨於緩慢。

對Magento性能優化也很有用:The Magento Best Practice for Performance and Scalibilty Whitepaper。即使是企業版,一些技巧也對Commiunity Edition非常有用。

0

我認爲你需要把一個識別ID,其中改變當客戶添加PRODUCTO到購物車

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的價值都需要改變。你可以試試嗎?

2

開源整頁緩存的Magento

工程速度非常快,它是免費的。在magento商業,你有類似的擴展,每個域名收取500美元

0

這個問題 - magento open source full page cache - 處理一些在這方面可用的問題和模塊。

整個頁面緩存出現問題時有很大的空間。 magento在將產品添加到購物車之前會進行檢查,但您向用戶展示的內容可能是錯誤的,這可能包括定價和其他重要方面。