How Magento cache Blocks HTML output----摘!!!


How Magento cache Blocks HTML output
Posted on
January 21, 2010
by
芳草苑主
Magentoのインストール後、cacheを有効にすると、Magentoはページの大部分の内容、例えばcms、product、categoryのcontent blockをキャッシュすると勘違いしていました.
今日でN回目のMagento wikiを見て、Magentoが最初にblock cacheの一部しか有効になっていないことに気づいた.よく考えてみると、Magentoがcontent blockをデフォルトでキャッシュしないのは一定の道理がある:各ユーザーのコンテンツキャッシュに対する要求は十分ではないので、Magentoはこの問題をユーザーに残して自分で考えてもらう.
Block cacheには3つのパラメータがあります.cache_Lifetimeはその名の通り、cache_tagsはcacheがいつ更新されるかに関係し、cache_keyはcacheのバージョンがいくつあるかに関係します.
Magentoディレクトリの下のすべてのファイルでcacheを検索します.tagsという言葉は、Navigation(製品メニュー)、Footer(脚注)、Adminhtml Menu(バックグラウンドメニュー)に関連する少数のファイルにしか現れないことに気づいただけです.これにより、Magentoにはキャッシュページの最も主要な部分であるcontent blockがまったくありません.昔、Magento forumで質問した質問を連想しました.なぜcacheは0.5 MBのメモリしか使いませんでしたか.その时私はmemcachedを使っていたが、热心な人がmemcachedがインストールされているかどうかを闻きに来た.php-perl-memcacheがインストールされているかどうか.誰も教えてくれませんでした--すべて正常です.Magentoはまだページの主な内容をキャッシュしていないからです.
Magento cacheメカニズムを理解し、自分の実際の状況に基づいてproduct pageキャッシュcontent blockを簡単にする:extends Mage_Catalog_Block_Product_ビューに加えて
view source print ? 1 protected function _construct() 2 { 3      $this ->addData( array ( 4          'cache_lifetime'     => 86400,  //seconds 5          'cache_tags'         => array (Mage_Catalog_Model_Product::CACHE_TAG . "_" . $this ->getProduct()->getId()), 6          'cache_key'          => $this ->getProduct()->getId(), 7      )); 8 }
このようにcms page content block cacheを押す.Category page content block cacheは少し複雑で、具体的にMagento wikiを見に行きます.
content block cacheの設定は速度最適化に顕著であり、私のproduct page requests per second指標は約70%向上した.
しかし、私はやはりMagentoをもっと速く走らせたいと思っています.よく言われているMagentoのスピード最適化の結果は、私にあまり快適ではありません.ページ全体をキャッシュするpage cacheの考えがあります.Nginxや他のweb serverにはhtml cacheをスケジューリングする良いメカニズムがあります.私のテストによると、同じ静的コンテンツのページをhtml(Nginx直接読み取り)に保存するのはphp(php backend on socket or port読み取り)に保存するよりも何倍も速く、この結果はpage cacheに憧れています.
page cacheを使用する場合は、sidebar cart、recent viewed/compared products、etcなどのページ内のdynamic blockを書き換える必要があります.簡単に言えば、load pages in two stages by ajaxです.Magento Enterprise Editionにはpage cache featureがありますが、私と同じ考えなのか分かりません.
Magento Enterprise Editionを買うよりも、自分で手を出したり、page cacheを実現してもらったりします.もしあなたがちょうど私と同じ考えを持っているなら、伝言を残してください.