Version Notes
N/A
Download this release
Release Info
Developer | Jonathan Selander |
Extension | Made_Cache |
Version | 1.1.0 |
Comparing to | |
See all releases |
Code changes from version 1.0.8 to 1.1.0
- app/code/community/Made/Cache/Block/Catalog/Product/List.php +1 -77
- app/code/community/Made/Cache/Block/Catalog/Product/View.php +0 -70
- app/code/community/Made/Cache/Block/Checkout/Cart/Item/Renderer.php +0 -25
- app/code/community/Made/Cache/Block/Checkout/Cart/Sidebar.php +0 -72
- app/code/community/Made/Cache/Block/Cms/Block.php +0 -64
- app/code/community/Made/Cache/Block/Cms/Page.php +0 -53
- app/code/community/Made/Cache/Block/Cms/Widget/Block.php +0 -61
- app/code/community/Made/Cache/Model/Observer.php +60 -0
- app/code/community/Made/Cache/Model/Observer/Abstract.php +38 -0
- app/code/community/Made/Cache/Model/Observer/Catalog.php +135 -0
- app/code/community/Made/Cache/Model/Observer/Checkout.php +51 -0
- app/code/community/Made/Cache/Model/Observer/Cms.php +93 -0
- app/code/community/Made/Cache/etc/config.xml +29 -30
- app/code/community/Made/Cache/etc/magento.vcl +2 -0
- package.xml +6 -6
app/code/community/Made/Cache/Block/Catalog/Product/List.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
*
|
4 |
*
|
5 |
* @package Made_Cache
|
6 |
* @author info@madepeople.se
|
@@ -8,82 +8,6 @@
|
|
8 |
*/
|
9 |
class Made_Cache_Block_Catalog_Product_List extends Mage_Catalog_Block_Product_List
|
10 |
{
|
11 |
-
/**
|
12 |
-
* Depending on block usage, the category id resides in different places
|
13 |
-
*
|
14 |
-
* @return int
|
15 |
-
*/
|
16 |
-
protected function _getCategoryIdForCache()
|
17 |
-
{
|
18 |
-
return $this->getCategoryId() ?
|
19 |
-
$this->getCategoryId() :
|
20 |
-
Mage::getSingleton('catalog/layer')
|
21 |
-
->getCurrentCategory()
|
22 |
-
->getId()
|
23 |
-
;
|
24 |
-
}
|
25 |
-
|
26 |
-
/**
|
27 |
-
* Clear on the specific category id and it's child products - when
|
28 |
-
* a product is saved, the price can have changed and the cache must
|
29 |
-
* be cleared
|
30 |
-
*
|
31 |
-
* @return string
|
32 |
-
*/
|
33 |
-
public function getCacheTags()
|
34 |
-
{
|
35 |
-
$tags = array();
|
36 |
-
$tags[] = Mage_Catalog_Model_Category::CACHE_TAG . '_' .
|
37 |
-
$this->_getCategoryIdForCache();
|
38 |
-
|
39 |
-
foreach ($this->_getProductCollection() as $_product) {
|
40 |
-
$tags[] = Mage_Catalog_Model_Product::CACHE_TAG."_".$_product->getId();
|
41 |
-
}
|
42 |
-
|
43 |
-
return $tags;
|
44 |
-
}
|
45 |
-
|
46 |
-
/**
|
47 |
-
* Take into concern all variables that can affect the product listing
|
48 |
-
*
|
49 |
-
* @return array
|
50 |
-
*/
|
51 |
-
public function getCacheKeyInfo()
|
52 |
-
{
|
53 |
-
$keys = parent::getCacheKeyInfo();
|
54 |
-
|
55 |
-
if (!is_array($keys)) {
|
56 |
-
$keys = array();
|
57 |
-
}
|
58 |
-
|
59 |
-
$_taxRateRequest = Mage::getModel('tax/calculation')->getRateRequest();
|
60 |
-
$_customer = Mage::getSingleton('customer/session')->getCustomer();
|
61 |
-
$_categoryId = $this->_getCategoryIdForCache();
|
62 |
-
$_toolbar = new Mage_Catalog_Block_Product_List_Toolbar();
|
63 |
-
|
64 |
-
foreach (Mage::app()->getRequest()->getParams() as $key => $value) {
|
65 |
-
if (is_array($value)) {
|
66 |
-
$value = implode('_', $value);
|
67 |
-
}
|
68 |
-
$keys[] = $key . $value;
|
69 |
-
}
|
70 |
-
|
71 |
-
return array_merge($keys, array(
|
72 |
-
$_categoryId,
|
73 |
-
$_toolbar->getCurrentOrder(),
|
74 |
-
$_toolbar->getCurrentDirection(),
|
75 |
-
$_toolbar->getCurrentMode(),
|
76 |
-
$_toolbar->getCurrentPage(),
|
77 |
-
$_toolbar->getLimit(),
|
78 |
-
$_customer->getGroupId(),
|
79 |
-
$_taxRateRequest->getCountryId(),
|
80 |
-
$_taxRateRequest->getRegionId(),
|
81 |
-
$_taxRateRequest->getPostcode(),
|
82 |
-
$_taxRateRequest->getCustomerClassId(),
|
83 |
-
Mage::registry('current_tag')
|
84 |
-
));
|
85 |
-
}
|
86 |
-
|
87 |
/**
|
88 |
* For granular caching of product list blocks. Requires the markup
|
89 |
* of a single product to be broken out of list.phtml into
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Use this for granular product list cache
|
4 |
*
|
5 |
* @package Made_Cache
|
6 |
* @author info@madepeople.se
|
8 |
*/
|
9 |
class Made_Cache_Block_Catalog_Product_List extends Mage_Catalog_Block_Product_List
|
10 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
/**
|
12 |
* For granular caching of product list blocks. Requires the markup
|
13 |
* of a single product to be broken out of list.phtml into
|
app/code/community/Made/Cache/Block/Catalog/Product/View.php
DELETED
@@ -1,70 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Granular product view cache. Currently the product object is fetched
|
4 |
-
* in the controller/helper regardless of existing cache or not. As this
|
5 |
-
* is a block-level cache module, we choose to ignore that.
|
6 |
-
*
|
7 |
-
* @package Made_Cache
|
8 |
-
* @author info@madepeople.se
|
9 |
-
* @copyright Copyright (c) 2012 Made People AB. (http://www.madepeople.se/)
|
10 |
-
*/
|
11 |
-
class Made_Cache_Block_Catalog_Product_View extends Mage_Catalog_Block_Product_View
|
12 |
-
{
|
13 |
-
/**
|
14 |
-
* We don't want to cache an item that's being edited
|
15 |
-
*
|
16 |
-
* @return null|int
|
17 |
-
*/
|
18 |
-
public function getCacheLifetime()
|
19 |
-
{
|
20 |
-
$request = $this->getRequest();
|
21 |
-
if ($request->getModuleName() == 'checkout'
|
22 |
-
&& $request->getControllerName() == 'cart'
|
23 |
-
&& $request->getActionName() == 'configure'
|
24 |
-
&& $request->getParam('id')) {
|
25 |
-
return null;
|
26 |
-
}
|
27 |
-
return $this->getData('cache_lifetime');
|
28 |
-
}
|
29 |
-
|
30 |
-
/**
|
31 |
-
* Only clear on the specific product id - otherwise one product save
|
32 |
-
* invalidates cache for all products
|
33 |
-
*
|
34 |
-
* @return string
|
35 |
-
*/
|
36 |
-
public function getCacheTags()
|
37 |
-
{
|
38 |
-
$tags = array();
|
39 |
-
$tags[] = Mage_Catalog_Model_Product::CACHE_TAG . '_'
|
40 |
-
. $this->getProduct()->getId();
|
41 |
-
return $tags;
|
42 |
-
}
|
43 |
-
|
44 |
-
/**
|
45 |
-
* Take into concern all variables that can affect the product view
|
46 |
-
*
|
47 |
-
* @return array
|
48 |
-
*/
|
49 |
-
public function getCacheKeyInfo()
|
50 |
-
{
|
51 |
-
$keys = parent::getCacheKeyInfo();
|
52 |
-
|
53 |
-
if (!is_array($keys)) {
|
54 |
-
$keys = array();
|
55 |
-
}
|
56 |
-
|
57 |
-
$_taxCalculator = Mage::getModel('tax/calculation');
|
58 |
-
$_customer = Mage::getSingleton('customer/session')->getCustomer();
|
59 |
-
$_product = $this->getProduct();
|
60 |
-
|
61 |
-
return array_merge($keys, array(
|
62 |
-
$_product->getId(),
|
63 |
-
$_customer->getGroupId(),
|
64 |
-
$_taxCalculator->getRate(
|
65 |
-
$_taxCalculator->getRateRequest()
|
66 |
-
->setProductClassId($_product->getTaxClassId())
|
67 |
-
)
|
68 |
-
));
|
69 |
-
}
|
70 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/community/Made/Cache/Block/Checkout/Cart/Item/Renderer.php
DELETED
@@ -1,25 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* @package Made_Cache
|
4 |
-
* @author info@madepeople.se
|
5 |
-
* @copyright Copyright (c) 2012 Made People AB. (http://www.madepeople.se/)
|
6 |
-
*/
|
7 |
-
class Made_Cache_Block_Checkout_Cart_Item_Renderer
|
8 |
-
extends Mage_Checkout_Block_Cart_Item_Renderer
|
9 |
-
{
|
10 |
-
/**
|
11 |
-
* Get item delete url without the redirect info as we don't know
|
12 |
-
* where the item has been cached
|
13 |
-
*
|
14 |
-
* @return string
|
15 |
-
*/
|
16 |
-
public function getDeleteUrl()
|
17 |
-
{
|
18 |
-
return $this->getUrl(
|
19 |
-
'checkout/cart/delete',
|
20 |
-
array(
|
21 |
-
'id'=>$this->getItem()->getId(),
|
22 |
-
)
|
23 |
-
);
|
24 |
-
}
|
25 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/community/Made/Cache/Block/Checkout/Cart/Sidebar.php
DELETED
@@ -1,72 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The cart sidebar block is widely used and often put on top of a layout. As
|
4 |
-
* its loading time is usually around ~300ms, caching it is a good idea
|
5 |
-
*
|
6 |
-
* @package Made_Cache
|
7 |
-
* @author info@madepeople.se
|
8 |
-
* @copyright Copyright (c) 2012 Made People AB. (http://www.madepeople.se/)
|
9 |
-
*/
|
10 |
-
class Made_Cache_Block_Checkout_Cart_Sidebar
|
11 |
-
extends Mage_Checkout_Block_Cart_Sidebar
|
12 |
-
{
|
13 |
-
/**
|
14 |
-
* Return the quote item id
|
15 |
-
*
|
16 |
-
* @return int
|
17 |
-
*/
|
18 |
-
protected function _getQuoteId()
|
19 |
-
{
|
20 |
-
$quote = $this->getCustomQuote() ? $this->getCustomQuote() : $this->getQuote();
|
21 |
-
return $quote->getId();
|
22 |
-
}
|
23 |
-
|
24 |
-
/**
|
25 |
-
* Only cache if there actually is a quote in the session. hasItems() is
|
26 |
-
* costly, so we don't want to use it. This means an empty cart block
|
27 |
-
* that previously had items is fetched from cache.
|
28 |
-
*
|
29 |
-
* @return int|null
|
30 |
-
*/
|
31 |
-
public function getCacheLifetime()
|
32 |
-
{
|
33 |
-
if (!$this->getQuote()->getId()) {
|
34 |
-
return null;
|
35 |
-
}
|
36 |
-
|
37 |
-
return $this->getData('cache_lifetime');
|
38 |
-
}
|
39 |
-
|
40 |
-
/**
|
41 |
-
* Clear on custom cache tag maintained by observer
|
42 |
-
*
|
43 |
-
* @return array
|
44 |
-
*/
|
45 |
-
public function getCacheTags()
|
46 |
-
{
|
47 |
-
$tags = array('SALES_QUOTE_' . $this->_getQuoteId());
|
48 |
-
return $tags;
|
49 |
-
}
|
50 |
-
|
51 |
-
/**
|
52 |
-
* Save on custom cache tag maintained by observer
|
53 |
-
*
|
54 |
-
* @return array
|
55 |
-
*/
|
56 |
-
public function getCacheKey()
|
57 |
-
{
|
58 |
-
$keys = array(
|
59 |
-
'BLOCK_TPL',
|
60 |
-
Mage::app()->getStore()->getCode(),
|
61 |
-
$this->getTemplateFile(),
|
62 |
-
'template' => $this->getTemplate(),
|
63 |
-
$this->_getQuoteId()
|
64 |
-
);
|
65 |
-
|
66 |
-
$key = array_values($keys);
|
67 |
-
$key = implode('|', $key);
|
68 |
-
$key = sha1($key);
|
69 |
-
|
70 |
-
return $key;
|
71 |
-
}
|
72 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/community/Made/Cache/Block/Cms/Block.php
DELETED
@@ -1,64 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Cache the CMS block, the issue here is that it doesn't necessarily exist
|
4 |
-
* so we must take this into concern and not cache if there is nothing
|
5 |
-
* fetched from the database
|
6 |
-
*
|
7 |
-
* @package Made_Cache
|
8 |
-
* @author info@madepeople.se
|
9 |
-
* @copyright Copyright (c) 2012 Made People AB. (http://www.madepeople.se/)
|
10 |
-
*/
|
11 |
-
class Made_Cache_Block_Cms_Block extends Mage_Cms_Block_Block
|
12 |
-
{
|
13 |
-
/**
|
14 |
-
* Clear on the specific CMS block id
|
15 |
-
*
|
16 |
-
* @return string
|
17 |
-
*/
|
18 |
-
public function getCacheTags()
|
19 |
-
{
|
20 |
-
$blockId = $this->getData('block_id');
|
21 |
-
if ($blockId) {
|
22 |
-
$block = Mage::getModel('cms/block')
|
23 |
-
->setStoreId(Mage::app()->getStore()->getId())
|
24 |
-
->load($blockId);
|
25 |
-
if ($block->getIsActive()) {
|
26 |
-
$tags = parent::getCacheTags();
|
27 |
-
$tags[] = Mage_Cms_Model_Block::CACHE_TAG . '_' .
|
28 |
-
$block->getId();
|
29 |
-
|
30 |
-
return $tags;
|
31 |
-
}
|
32 |
-
}
|
33 |
-
|
34 |
-
return array();
|
35 |
-
}
|
36 |
-
|
37 |
-
/**
|
38 |
-
* Take into concern all variables that can affect the CMS block view
|
39 |
-
*
|
40 |
-
* @return array
|
41 |
-
*/
|
42 |
-
public function getCacheKeyInfo()
|
43 |
-
{
|
44 |
-
$blockId = $this->getData('block_id');
|
45 |
-
if ($blockId) {
|
46 |
-
$block = Mage::getModel('cms/block')
|
47 |
-
->setStoreId(Mage::app()->getStore()->getId())
|
48 |
-
->load($blockId);
|
49 |
-
if ($block->getIsActive()) {
|
50 |
-
$keys = parent::getCacheKeyInfo();
|
51 |
-
|
52 |
-
if (!is_array($keys)) {
|
53 |
-
$keys = array();
|
54 |
-
}
|
55 |
-
|
56 |
-
$keys[] = $blockId;
|
57 |
-
$keys[] = $this->getLayout()->getUpdate()->getCacheId();
|
58 |
-
return $keys;
|
59 |
-
}
|
60 |
-
}
|
61 |
-
return array();
|
62 |
-
}
|
63 |
-
|
64 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/community/Made/Cache/Block/Cms/Page.php
DELETED
@@ -1,53 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Automatic CMS page cache
|
4 |
-
*
|
5 |
-
* @package Made_Cache
|
6 |
-
* @author info@madepeople.se
|
7 |
-
* @copyright Copyright (c) 2012 Made People AB. (http://www.madepeople.se/)
|
8 |
-
*/
|
9 |
-
class Made_Cache_Block_Cms_Page extends Mage_Cms_Block_Page
|
10 |
-
{
|
11 |
-
public function getCacheLifetime()
|
12 |
-
{
|
13 |
-
// If overriden by user
|
14 |
-
if ($this->hasData('cache_lifetime')) {
|
15 |
-
return $this->getData('lifetime');
|
16 |
-
}
|
17 |
-
|
18 |
-
return Made_Cache_Model_Layout::DEFAULT_CACHE_LIFETIME;
|
19 |
-
}
|
20 |
-
|
21 |
-
/**
|
22 |
-
* Clear on the specific CMS page id
|
23 |
-
*
|
24 |
-
* @return string
|
25 |
-
*/
|
26 |
-
public function getCacheTags()
|
27 |
-
{
|
28 |
-
$tags = parent::getCacheTags();
|
29 |
-
$tags[] = Mage_Cms_Model_Page::CACHE_TAG . '_' .
|
30 |
-
$this->getPage()->getId();
|
31 |
-
|
32 |
-
return $tags;
|
33 |
-
}
|
34 |
-
|
35 |
-
/**
|
36 |
-
* Take into concern all variables that can affect the CMS page view
|
37 |
-
*
|
38 |
-
* @return array
|
39 |
-
*/
|
40 |
-
public function getCacheKeyInfo()
|
41 |
-
{
|
42 |
-
$keys = parent::getCacheKeyInfo();
|
43 |
-
|
44 |
-
if (!is_array($keys)) {
|
45 |
-
$keys = array();
|
46 |
-
}
|
47 |
-
|
48 |
-
$keys[] = $this->getPage()->getId();
|
49 |
-
$keys[] = $this->getLayout()->getUpdate()->getCacheId();
|
50 |
-
|
51 |
-
return $keys;
|
52 |
-
}
|
53 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/community/Made/Cache/Block/Cms/Widget/Block.php
DELETED
@@ -1,61 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* As with the standard CMS block, for widget rendering
|
4 |
-
*
|
5 |
-
* @package Made_Cache
|
6 |
-
* @author info@madepeople.se
|
7 |
-
* @copyright Copyright (c) 2012 Made People AB. (http://www.madepeople.se/)
|
8 |
-
*/
|
9 |
-
class Made_Cache_Block_Cms_Widget_Block extends Mage_Cms_Block_Widget_Block
|
10 |
-
{
|
11 |
-
/**
|
12 |
-
* Clear on the specific CMS block id
|
13 |
-
*
|
14 |
-
* @return string
|
15 |
-
*/
|
16 |
-
public function getCacheTags()
|
17 |
-
{
|
18 |
-
$blockId = $this->getData('block_id');;
|
19 |
-
if ($blockId) {
|
20 |
-
$block = Mage::getModel('cms/block')
|
21 |
-
->setStoreId(Mage::app()->getStore()->getId())
|
22 |
-
->load($blockId);
|
23 |
-
if ($block->getIsActive()) {
|
24 |
-
$tags = parent::getCacheTags();
|
25 |
-
$tags[] = Mage_Cms_Model_Block::CACHE_TAG . '_' .
|
26 |
-
$block->getId();
|
27 |
-
|
28 |
-
return $tags;
|
29 |
-
}
|
30 |
-
}
|
31 |
-
|
32 |
-
return array();
|
33 |
-
}
|
34 |
-
|
35 |
-
/**
|
36 |
-
* Take into concern all variables that can affect the CMS block view
|
37 |
-
*
|
38 |
-
* @return array
|
39 |
-
*/
|
40 |
-
public function getCacheKeyInfo()
|
41 |
-
{
|
42 |
-
$blockId = $this->getData('block_id');;
|
43 |
-
if ($blockId) {
|
44 |
-
$block = Mage::getModel('cms/block')
|
45 |
-
->setStoreId(Mage::app()->getStore()->getId())
|
46 |
-
->load($blockId);
|
47 |
-
if ($block->getIsActive()) {
|
48 |
-
$keys = parent::getCacheKeyInfo();
|
49 |
-
|
50 |
-
if (!is_array($keys)) {
|
51 |
-
$keys = array();
|
52 |
-
}
|
53 |
-
|
54 |
-
$keys[] = $blockId;
|
55 |
-
$keys[] = $this->getLayout()->getUpdate()->getCacheId();
|
56 |
-
return $keys;
|
57 |
-
}
|
58 |
-
}
|
59 |
-
return array();
|
60 |
-
}
|
61 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/community/Made/Cache/Model/Observer.php
CHANGED
@@ -8,6 +8,46 @@
|
|
8 |
*/
|
9 |
class Made_Cache_Model_Observer
|
10 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
/**
|
12 |
* Clear product cache after a review is saved
|
13 |
*
|
@@ -81,4 +121,24 @@ class Made_Cache_Model_Observer
|
|
81 |
$object = $observer->getEvent()->getQuote();
|
82 |
Mage::app()->cleanCache(array('SALES_QUOTE_' . $object->getId()));
|
83 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
}
|
8 |
*/
|
9 |
class Made_Cache_Model_Observer
|
10 |
{
|
11 |
+
/**
|
12 |
+
* Observer that injects cache values into specific blocks, we want
|
13 |
+
* to do it like this instead of block rewrites to prevent other
|
14 |
+
* third-party modules to work
|
15 |
+
*
|
16 |
+
* @param Varien_Event_Observer $observer
|
17 |
+
*/
|
18 |
+
public function setupBlock(Varien_Event_Observer $observer)
|
19 |
+
{
|
20 |
+
$block = $observer->getEvent()->getBlock();
|
21 |
+
if ($block->getCacheLifetime() === null) {
|
22 |
+
// null lifetime means don't use cache
|
23 |
+
return;
|
24 |
+
}
|
25 |
+
|
26 |
+
switch (true) {
|
27 |
+
case $block instanceof Mage_Catalog_Block_Product_View:
|
28 |
+
Mage::getSingleton('cache/observer_catalog')
|
29 |
+
->applyProductView($block);
|
30 |
+
break;
|
31 |
+
case $block instanceof Mage_Catalog_Block_Product_List:
|
32 |
+
Mage::getSingleton('cache/observer_catalog')
|
33 |
+
->applyProductList($block);
|
34 |
+
break;
|
35 |
+
case $block instanceof Mage_Cms_Block_Page:
|
36 |
+
Mage::getSingleton('cache/observer_cms')
|
37 |
+
->applyCmsPage($block);
|
38 |
+
break;
|
39 |
+
case $block instanceof Mage_Cms_Block_Block:
|
40 |
+
case $block instanceof Mage_Cms_Block_Widget_Block:
|
41 |
+
Mage::getSingleton('cache/observer_cms')
|
42 |
+
->applyCmsBlock($block);
|
43 |
+
break;
|
44 |
+
case $block instanceof Mage_Checkout_Block_Cart_Sidebar:
|
45 |
+
Mage::getSingleton('cache/observer_checkout')
|
46 |
+
->applyCartSidebar($block);
|
47 |
+
break;
|
48 |
+
}
|
49 |
+
}
|
50 |
+
|
51 |
/**
|
52 |
* Clear product cache after a review is saved
|
53 |
*
|
121 |
$object = $observer->getEvent()->getQuote();
|
122 |
Mage::app()->cleanCache(array('SALES_QUOTE_' . $object->getId()));
|
123 |
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Unset the uenc param for redirection of blocks that have cached links.
|
127 |
+
* If we don't do this, links redirects to where user X came from when
|
128 |
+
* the block was cached. This also means that cached return links for
|
129 |
+
* ESI blocks return a visitor to the ESI-URL, and we can't have that.
|
130 |
+
*
|
131 |
+
* @param Varien_Event_Observer $observer
|
132 |
+
*/
|
133 |
+
public function removeUencParam(Varien_Event_Observer $observer)
|
134 |
+
{
|
135 |
+
$request = $observer->getEvent()->getControllerAction()
|
136 |
+
->getRequest();
|
137 |
+
|
138 |
+
// To this day, the only used encoding type is PARAM_NAME_URL_ENCODED
|
139 |
+
$key = Mage_Core_Controller_Varien_Action::PARAM_NAME_URL_ENCODED;
|
140 |
+
if (($param = $request->getParam($key)) !== null) {
|
141 |
+
$request->setParam($key, null);
|
142 |
+
}
|
143 |
+
}
|
144 |
}
|
app/code/community/Made/Cache/Model/Observer/Abstract.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package Made_Cache
|
4 |
+
* @author info@madepeople.se
|
5 |
+
* @copyright Copyright (c) 2012 Made People AB. (http://www.madepeople.se/)
|
6 |
+
*/
|
7 |
+
abstract class Made_Cache_Model_Observer_Abstract
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* Get Key for caching block content
|
11 |
+
*
|
12 |
+
* @see Mage_Core_Block_Abstract
|
13 |
+
* @return string
|
14 |
+
*/
|
15 |
+
protected function _getCacheKey(array $keyInfo)
|
16 |
+
{
|
17 |
+
$keyInfo = array_values($keyInfo); // ignore array keys
|
18 |
+
$key = implode('|', $keyInfo);
|
19 |
+
$key = sha1($key);
|
20 |
+
return $key;
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Get generic key array including handle etc, that all blocks use
|
25 |
+
*
|
26 |
+
* @param Mage_Core_Block_Abstract $block
|
27 |
+
* @return array
|
28 |
+
*/
|
29 |
+
protected function _getBasicKeys(Mage_Core_Block_Abstract $block)
|
30 |
+
{
|
31 |
+
$keys = $block->getCacheKeyInfo();
|
32 |
+
if (!is_array($keys)) {
|
33 |
+
$keys = array();
|
34 |
+
}
|
35 |
+
$keys[] = $block->getLayout()->getUpdate()->getCacheId();
|
36 |
+
return $keys;
|
37 |
+
}
|
38 |
+
}
|
app/code/community/Made/Cache/Model/Observer/Catalog.php
ADDED
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Inject cache variables for catalog blocks
|
4 |
+
*
|
5 |
+
* @package Made_Cache
|
6 |
+
* @author info@madepeople.se
|
7 |
+
* @copyright Copyright (c) 2012 Made People AB. (http://www.madepeople.se/)
|
8 |
+
*/
|
9 |
+
class Made_Cache_Model_Observer_Catalog
|
10 |
+
extends Made_Cache_Model_Observer_Abstract
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* Product view block, don't cache if rendered with cart item update
|
14 |
+
*
|
15 |
+
* @param Mage_Catalog_Block_Product_View $block
|
16 |
+
*/
|
17 |
+
public function applyProductView(Mage_Catalog_Block_Product_View $block)
|
18 |
+
{
|
19 |
+
// The "messages" block is session-dependent, don't cache
|
20 |
+
if (($messagesBlock = $block->getLayout()->getBlock('messages')) !== null) {
|
21 |
+
if (count($messagesBlock->getMessageCollection())) {
|
22 |
+
$block->setData('cache_lifetime', null);
|
23 |
+
return;
|
24 |
+
}
|
25 |
+
}
|
26 |
+
|
27 |
+
// Cart stuff is session-dependent
|
28 |
+
$request = $block->getRequest();
|
29 |
+
if ($request->getModuleName() == 'checkout'
|
30 |
+
&& $request->getControllerName() == 'cart'
|
31 |
+
&& $request->getActionName() == 'configure'
|
32 |
+
&& $request->getParam('id')) {
|
33 |
+
$block->setData('cache_lifetime', null);
|
34 |
+
return;
|
35 |
+
}
|
36 |
+
|
37 |
+
// Set cache tags
|
38 |
+
$tags = array(Mage_Catalog_Model_Product::CACHE_TAG . '_'
|
39 |
+
. $block->getProduct()->getId());
|
40 |
+
$block->setData('cache_tags', $tags);
|
41 |
+
|
42 |
+
// Set cache keys
|
43 |
+
$keys = $this->_getBasicKeys($block);
|
44 |
+
|
45 |
+
$_taxCalculator = Mage::getModel('tax/calculation');
|
46 |
+
$_customer = Mage::getSingleton('customer/session')->getCustomer();
|
47 |
+
$_product = $block->getProduct();
|
48 |
+
|
49 |
+
$keys = array_merge($keys, array(
|
50 |
+
$_product->getId(),
|
51 |
+
$_customer->getGroupId(),
|
52 |
+
$_taxCalculator->getRate(
|
53 |
+
$_taxCalculator->getRateRequest()
|
54 |
+
->setProductClassId($_product->getTaxClassId())
|
55 |
+
)
|
56 |
+
));
|
57 |
+
$block->setData('cache_key', $this->_getCacheKey($keys));
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Depending on block usage, the category id resides in different places
|
62 |
+
*
|
63 |
+
* @return int
|
64 |
+
*/
|
65 |
+
protected function _getCategoryIdForProductList($block)
|
66 |
+
{
|
67 |
+
return $block->getCategoryId() ?
|
68 |
+
$block->getCategoryId() :
|
69 |
+
Mage::getSingleton('catalog/layer')
|
70 |
+
->getCurrentCategory()
|
71 |
+
->getId()
|
72 |
+
;
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Product list cache, needs to clear on displayed products
|
77 |
+
*
|
78 |
+
* @param Mage_Catalog_Block_Product_List $block
|
79 |
+
*/
|
80 |
+
public function applyProductList(Mage_Catalog_Block_Product_List $block)
|
81 |
+
{
|
82 |
+
// The "messages" block is session-dependent, don't cache
|
83 |
+
if (($messagesBlock = $block->getLayout()->getBlock('messages')) !== null) {
|
84 |
+
if (count($messagesBlock->getMessageCollection())) {
|
85 |
+
$block->setData('cache_lifetime', null);
|
86 |
+
return;
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
// Set cache tags
|
91 |
+
$tags = array();
|
92 |
+
$tags[] = Mage_Catalog_Model_Category::CACHE_TAG . '_' .
|
93 |
+
$this->_getCategoryIdForProductList($block);
|
94 |
+
|
95 |
+
// The toolbar needs to apply sort order etc
|
96 |
+
$productCollection = $block->getLoadedProductCollection();
|
97 |
+
$_toolbar = new Mage_Catalog_Block_Product_List_Toolbar();
|
98 |
+
$_toolbar->setCollection($productCollection);
|
99 |
+
|
100 |
+
foreach ($productCollection as $_product) {
|
101 |
+
$tags[] = Mage_Catalog_Model_Product::CACHE_TAG."_".$_product->getId();
|
102 |
+
}
|
103 |
+
$block->setData('cache_tags', $tags);
|
104 |
+
|
105 |
+
// Set cache key
|
106 |
+
$keys = $this->_getBasicKeys($block);
|
107 |
+
|
108 |
+
$_taxRateRequest = Mage::getModel('tax/calculation')->getRateRequest();
|
109 |
+
$_customer = Mage::getSingleton('customer/session')->getCustomer();
|
110 |
+
$_categoryId = $this->_getCategoryIdForProductList($block);
|
111 |
+
|
112 |
+
foreach (Mage::app()->getRequest()->getParams() as $key => $value) {
|
113 |
+
if (is_array($value)) {
|
114 |
+
$value = implode('_', $value);
|
115 |
+
}
|
116 |
+
$keys[] = $key . '_' . $value;
|
117 |
+
}
|
118 |
+
|
119 |
+
$keys = array_merge($keys, array(
|
120 |
+
$_categoryId,
|
121 |
+
$_toolbar->getCurrentOrder(),
|
122 |
+
$_toolbar->getCurrentDirection(),
|
123 |
+
$_toolbar->getCurrentMode(),
|
124 |
+
$_toolbar->getCurrentPage(),
|
125 |
+
$_toolbar->getLimit(),
|
126 |
+
$_customer->getGroupId(),
|
127 |
+
$_taxRateRequest->getCountryId(),
|
128 |
+
$_taxRateRequest->getRegionId(),
|
129 |
+
$_taxRateRequest->getPostcode(),
|
130 |
+
$_taxRateRequest->getCustomerClassId(),
|
131 |
+
Mage::registry('current_tag')
|
132 |
+
));
|
133 |
+
$block->setData('cache_key', $this->_getCacheKey($keys));
|
134 |
+
}
|
135 |
+
}
|
app/code/community/Made/Cache/Model/Observer/Checkout.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Inject cache variables for checkout blocks
|
4 |
+
*
|
5 |
+
* @package Made_Cache
|
6 |
+
* @author info@madepeople.se
|
7 |
+
* @copyright Copyright (c) 2012 Made People AB. (http://www.madepeople.se/)
|
8 |
+
*/
|
9 |
+
class Made_Cache_Model_Observer_Checkout
|
10 |
+
extends Made_Cache_Model_Observer_Abstract
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* Return the quote item id
|
14 |
+
*
|
15 |
+
* @param Mage_Checkout_Block_Cart_Sidebar $block
|
16 |
+
* @return int
|
17 |
+
*/
|
18 |
+
protected function _getQuoteId(Mage_Checkout_Block_Cart_Sidebar $block)
|
19 |
+
{
|
20 |
+
$quote = $block->getCustomQuote() ? $block->getCustomQuote() : $block->getQuote();
|
21 |
+
return $quote->getId();
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Don't cache this block if there is no quote item set. We can't call
|
26 |
+
* hasItems because it's too costly
|
27 |
+
*
|
28 |
+
* @param Mage_Checkout_Block_Cart_Sidebar $block
|
29 |
+
*/
|
30 |
+
public function applyCartSidebar(Mage_Checkout_Block_Cart_Sidebar $block)
|
31 |
+
{
|
32 |
+
if (!$block->getQuote()->getId()) {
|
33 |
+
$block->setData('cache_lifetime', null);
|
34 |
+
return;
|
35 |
+
}
|
36 |
+
|
37 |
+
// Set cache tags
|
38 |
+
$tags = array('SALES_QUOTE_' . $this->_getQuoteId($block));
|
39 |
+
$block->setData('cache_tags', $tags);
|
40 |
+
|
41 |
+
// Set cache keys
|
42 |
+
$keys = array(
|
43 |
+
'BLOCK_TPL',
|
44 |
+
Mage::app()->getStore()->getCode(),
|
45 |
+
$block->getTemplateFile(),
|
46 |
+
'template' => $block->getTemplate(),
|
47 |
+
$this->_getQuoteId($block)
|
48 |
+
);
|
49 |
+
$block->setData('cache_key', $this->_getCacheKey($keys));
|
50 |
+
}
|
51 |
+
}
|
app/code/community/Made/Cache/Model/Observer/Cms.php
ADDED
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Inject cache variables for cms blocks
|
4 |
+
*
|
5 |
+
* @package Made_Cache
|
6 |
+
* @author info@madepeople.se
|
7 |
+
* @copyright Copyright (c) 2012 Made People AB. (http://www.madepeople.se/)
|
8 |
+
*/
|
9 |
+
class Made_Cache_Model_Observer_Cms
|
10 |
+
extends Made_Cache_Model_Observer_Abstract
|
11 |
+
{
|
12 |
+
/**
|
13 |
+
* CMS Page cache
|
14 |
+
*
|
15 |
+
* @param Mage_Cms_Block_Page $block
|
16 |
+
*/
|
17 |
+
public function applyCmsPage(Mage_Cms_Block_Page $block)
|
18 |
+
{
|
19 |
+
// The "messages" block is session-dependent, don't cache
|
20 |
+
if (($messagesBlock = $block->getLayout()->getBlock('messages')) !== null) {
|
21 |
+
if (count($messagesBlock->getMessageCollection())) {
|
22 |
+
$block->setData('cache_lifetime', null);
|
23 |
+
return;
|
24 |
+
}
|
25 |
+
}
|
26 |
+
|
27 |
+
// Set cache tags
|
28 |
+
$tags = $block->getCacheTags();
|
29 |
+
$tags[] = Mage_Cms_Model_Page::CACHE_TAG . '_' .
|
30 |
+
$block->getPage()->getId();
|
31 |
+
$block->setData('cache_tags', $tags);
|
32 |
+
|
33 |
+
// Set cache keys
|
34 |
+
$keys = $this->_getBasicKeys($block);
|
35 |
+
|
36 |
+
$keys[] = $block->getPage()->getId();
|
37 |
+
$keys[] = $block->getLayout()->getUpdate()->getCacheId();
|
38 |
+
$block->setData('cache_key', $this->_getCacheKey($keys));
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* CMS block cache, must use the block id from the database
|
43 |
+
*
|
44 |
+
* @param type $block
|
45 |
+
*/
|
46 |
+
public function applyCmsBlock($block)
|
47 |
+
{
|
48 |
+
// The "messages" block is session-dependent, don't cache
|
49 |
+
if (($messagesBlock = $block->getLayout()->getBlock('messages')) !== null) {
|
50 |
+
if (count($messagesBlock->getMessageCollection())) {
|
51 |
+
$block->setData('cache_lifetime', null);
|
52 |
+
return;
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
// Set cache tags
|
57 |
+
$tags = array();
|
58 |
+
|
59 |
+
$blockId = $block->getData('block_id');;
|
60 |
+
if ($blockId) {
|
61 |
+
$cmsBlock = Mage::getModel('cms/block')
|
62 |
+
->setStoreId(Mage::app()->getStore()->getId())
|
63 |
+
->load($blockId);
|
64 |
+
if ($cmsBlock->getIsActive()) {
|
65 |
+
$tags = $block->getCacheTags();
|
66 |
+
$tags[] = Mage_Cms_Model_Block::CACHE_TAG . '_' .
|
67 |
+
$cmsBlock->getId();
|
68 |
+
}
|
69 |
+
}
|
70 |
+
$block->setData('cache_tags', $tags);
|
71 |
+
|
72 |
+
// Set cache key
|
73 |
+
$keys = $this->_getBasicKeys($block);
|
74 |
+
|
75 |
+
$blockId = $block->getData('block_id');;
|
76 |
+
if ($blockId) {
|
77 |
+
$cmsBlock = Mage::getModel('cms/block')
|
78 |
+
->setStoreId(Mage::app()->getStore()->getId())
|
79 |
+
->load($blockId);
|
80 |
+
if ($cmsBlock->getIsActive()) {
|
81 |
+
$keys = $block->getCacheKeyInfo();
|
82 |
+
|
83 |
+
if (!is_array($keys)) {
|
84 |
+
$keys = array();
|
85 |
+
}
|
86 |
+
|
87 |
+
$keys[] = $blockId;
|
88 |
+
$keys[] = $block->getLayout()->getUpdate()->getCacheId();
|
89 |
+
}
|
90 |
+
}
|
91 |
+
$block->setData('cache_key', $this->_getCacheKey($keys));
|
92 |
+
}
|
93 |
+
}
|
app/code/community/Made/Cache/etc/config.xml
CHANGED
@@ -9,7 +9,7 @@
|
|
9 |
<config>
|
10 |
<modules>
|
11 |
<Made_Cache>
|
12 |
-
<version>1.0
|
13 |
</Made_Cache>
|
14 |
</modules>
|
15 |
<global>
|
@@ -27,27 +27,35 @@
|
|
27 |
<cache>
|
28 |
<class>Made_Cache_Block</class>
|
29 |
</cache>
|
30 |
-
<catalog>
|
31 |
-
<rewrite>
|
32 |
-
<product_view>Made_Cache_Block_Catalog_Product_View</product_view>
|
33 |
-
<product_list>Made_Cache_Block_Catalog_Product_List</product_list>
|
34 |
-
</rewrite>
|
35 |
-
</catalog>
|
36 |
-
<cms>
|
37 |
-
<rewrite>
|
38 |
-
<page>Made_Cache_Block_Cms_Page</page>
|
39 |
-
<block>Made_Cache_Block_Cms_Block</block>
|
40 |
-
<widget_block>Made_Cache_Block_Cms_Widget_Block</widget_block>
|
41 |
-
</rewrite>
|
42 |
-
</cms>
|
43 |
-
<checkout>
|
44 |
-
<rewrite>
|
45 |
-
<cart_sidebar>Made_Cache_Block_Checkout_Cart_Sidebar</cart_sidebar>
|
46 |
-
<cart_item_renderer>Made_Cache_Block_Checkout_Cart_Item_Renderer</cart_item_renderer>
|
47 |
-
</rewrite>
|
48 |
-
</checkout>
|
49 |
</blocks>
|
50 |
<events>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
<sales_quote_save_after>
|
52 |
<observers>
|
53 |
<quote_save_after>
|
@@ -66,15 +74,6 @@
|
|
66 |
</cache_review_save_after>
|
67 |
</observers>
|
68 |
</review_save_after>
|
69 |
-
<core_block_abstract_to_html_after>
|
70 |
-
<observers>
|
71 |
-
<cache_add_esi_tags>
|
72 |
-
<type>singleton</type>
|
73 |
-
<class>cache/observer</class>
|
74 |
-
<method>addEsiTag</method>
|
75 |
-
</cache_add_esi_tags>
|
76 |
-
</observers>
|
77 |
-
</core_block_abstract_to_html_after>
|
78 |
<controller_action_postdispatch_adminhtml_catalog_product_save>
|
79 |
<observers>
|
80 |
<clean_cache_after_product_save>
|
@@ -103,7 +102,7 @@
|
|
103 |
</madecache>
|
104 |
</updates>
|
105 |
</layout>
|
106 |
-
<!-- We
|
107 |
<translate>
|
108 |
<modules>
|
109 |
<Made_Cache>
|
9 |
<config>
|
10 |
<modules>
|
11 |
<Made_Cache>
|
12 |
+
<version>1.1.0</version>
|
13 |
</Made_Cache>
|
14 |
</modules>
|
15 |
<global>
|
27 |
<cache>
|
28 |
<class>Made_Cache_Block</class>
|
29 |
</cache>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
</blocks>
|
31 |
<events>
|
32 |
+
<controller_action_predispatch>
|
33 |
+
<observers>
|
34 |
+
<remove_uenc_param>
|
35 |
+
<type>singleton</type>
|
36 |
+
<class>cache/observer</class>
|
37 |
+
<method>removeUencParam</method>
|
38 |
+
</remove_uenc_param>
|
39 |
+
</observers>
|
40 |
+
</controller_action_predispatch>
|
41 |
+
<core_block_abstract_to_html_before>
|
42 |
+
<observers>
|
43 |
+
<cache_setup_block>
|
44 |
+
<type>singleton</type>
|
45 |
+
<class>cache/observer</class>
|
46 |
+
<method>setupBlock</method>
|
47 |
+
</cache_setup_block>
|
48 |
+
</observers>
|
49 |
+
</core_block_abstract_to_html_before>
|
50 |
+
<core_block_abstract_to_html_after>
|
51 |
+
<observers>
|
52 |
+
<cache_add_esi_tags>
|
53 |
+
<type>singleton</type>
|
54 |
+
<class>cache/observer</class>
|
55 |
+
<method>addEsiTag</method>
|
56 |
+
</cache_add_esi_tags>
|
57 |
+
</observers>
|
58 |
+
</core_block_abstract_to_html_after>
|
59 |
<sales_quote_save_after>
|
60 |
<observers>
|
61 |
<quote_save_after>
|
74 |
</cache_review_save_after>
|
75 |
</observers>
|
76 |
</review_save_after>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
<controller_action_postdispatch_adminhtml_catalog_product_save>
|
78 |
<observers>
|
79 |
<clean_cache_after_product_save>
|
102 |
</madecache>
|
103 |
</updates>
|
104 |
</layout>
|
105 |
+
<!-- We have catalog blocks - let's use its translations -->
|
106 |
<translate>
|
107 |
<modules>
|
108 |
<Made_Cache>
|
app/code/community/Made/Cache/etc/magento.vcl
CHANGED
@@ -86,6 +86,8 @@ sub vcl_recv {
|
|
86 |
}
|
87 |
|
88 |
# as soon as we have a NO_CACHE cookie pass request
|
|
|
|
|
89 |
#if (req.http.cookie ~ "NO_CACHE=") {
|
90 |
# return (pass);
|
91 |
#}
|
86 |
}
|
87 |
|
88 |
# as soon as we have a NO_CACHE cookie pass request
|
89 |
+
# Modification for Made_Cache, ideally we should only disable cache per
|
90 |
+
# specific ruote
|
91 |
#if (req.http.cookie ~ "NO_CACHE=") {
|
92 |
# return (pass);
|
93 |
#}
|
package.xml
CHANGED
@@ -1,26 +1,26 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Made_Cache</name>
|
4 |
-
<version>1.0
|
5 |
<stability>stable</stability>
|
6 |
<license>OSL 3.0</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
-
<summary>Advanced Block Cache module that enhances performance by implementing arbitrary block cache with support for Varnish ESI tags.</summary>
|
10 |
<description>Few know that Magento out of the box doesn't actually cache anything other than the Navigation and Footer blocks, which are basically static as it is.
|
11 |

|
12 |
This module enhances performance by allowing developers to cache any block they want via simple layout xml changes - per layout handle.
|
13 |

|
14 |
There is also support for disabling cache for specific handles such as checkout, etc, where you don't want to load the main content block from cache.
|
15 |

|
16 |
-
ESI is supported in conjunction with Phoenix_VarnishCache, and allows for super-fast page views.
|
17 |

|
18 |
A good block cache is vital for scaling a site, be sure to implement it before residing to full page cache.</description>
|
19 |
<notes>N/A</notes>
|
20 |
<authors><author><name>Jonathan Selander</name><user>jonathan_made</user><email>info@madepeople.se</email></author></authors>
|
21 |
-
<date>2012-05-
|
22 |
-
<time>13:
|
23 |
-
<contents><target name="magecommunity"><dir name="Made"><dir name="Cache"><dir name="Block"><dir name="Catalog"><dir name="Product"><dir name="List"><file name="Product.php" hash="6356fde9c5acf5f0a96851e780a691b1"/></dir><file name="List.php" hash="
|
24 |
<compatible/>
|
25 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
26 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Made_Cache</name>
|
4 |
+
<version>1.1.0</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>OSL 3.0</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
+
<summary>Advanced non-intrusive Block Cache module that enhances performance by implementing arbitrary block cache with support for Varnish ESI tags.</summary>
|
10 |
<description>Few know that Magento out of the box doesn't actually cache anything other than the Navigation and Footer blocks, which are basically static as it is.
|
11 |

|
12 |
This module enhances performance by allowing developers to cache any block they want via simple layout xml changes - per layout handle.
|
13 |

|
14 |
There is also support for disabling cache for specific handles such as checkout, etc, where you don't want to load the main content block from cache.
|
15 |

|
16 |
+
ESI is supported in conjunction with Phoenix_VarnishCache, and allows for super-fast page views. Check out layout/madecache.xml for examples.
|
17 |

|
18 |
A good block cache is vital for scaling a site, be sure to implement it before residing to full page cache.</description>
|
19 |
<notes>N/A</notes>
|
20 |
<authors><author><name>Jonathan Selander</name><user>jonathan_made</user><email>info@madepeople.se</email></author></authors>
|
21 |
+
<date>2012-05-23</date>
|
22 |
+
<time>13:26:54</time>
|
23 |
+
<contents><target name="magecommunity"><dir name="Made"><dir name="Cache"><dir name="Block"><dir name="Catalog"><dir name="Product"><dir name="List"><file name="Product.php" hash="6356fde9c5acf5f0a96851e780a691b1"/></dir><file name="List.php" hash="06ab53286ff19e5cf057b6f3da90088f"/></dir></dir></dir><dir name="Model"><file name="Layout.php" hash="f3bf85d778680fb1246416ad5b63e961"/><dir name="Observer"><file name="Abstract.php" hash="e8e501179fdbca2596b4d8b5291ec95c"/><file name="Catalog.php" hash="c58a254f967aba975cb8351e0ce5eb90"/><file name="Checkout.php" hash="4c1361159d91da2452c1d50e1fc52505"/><file name="Cms.php" hash="dac87d4f7e6720136fc84ba3ac32ff7d"/></dir><file name="Observer.php" hash="72c108a3656b1e813bcb3dcb16f0b3de"/></dir><dir name="controllers"><file name="VarnishController.php" hash="6ae7446eef83e106c56b0f05711c3ffa"/></dir><dir name="etc"><file name="config.xml" hash="6eea279bba8f9e4c0c4bf3c44e6a5817"/><file name="magento.vcl" hash="dd4f36661f4da1563fb383aa23e872d1"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Made_Cache.xml" hash="4cf53cc9b4e525eb560f7fe1278d96bd"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="madecache.xml" hash="e7431217f4b0ddc25b405c26530f9161"/></dir></dir></dir></dir></target></contents>
|
24 |
<compatible/>
|
25 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
26 |
</package>
|