LiteSpeed_LiteMage - Version 1.1.2

Version Notes

Added cached objects counter and statistics to the Cache Management page.
Fixed a bug that could result in a blank page after LiteMage installation.

Download this release

Release Info

Developer LiteSpeed Technologies
Extension LiteSpeed_LiteMage
Version 1.1.2
Comparing to
See all releases


Code changes from version 1.1.1 to 1.1.2

app/code/community/Litespeed/Litemage/Block/Adminhtml/Cache/Management.php CHANGED
@@ -48,6 +48,48 @@ class Litespeed_Litemage_Block_Adminhtml_Cache_Management extends Mage_Adminhtml
48
  }
49
  }
50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  public function getCrawlerStatus()
52
  {
53
  $status = Mage::getModel( 'litemage/observer_cron' )->getCrawlerStatus();
@@ -71,4 +113,6 @@ class Litespeed_Litemage_Block_Adminhtml_Cache_Management extends Mage_Adminhtml
71
  return Mage::app()->useCache('layout') && Mage::app()->useCache('config');
72
  }
73
 
 
 
74
  }
48
  }
49
  }
50
 
51
+ public function getCacheStatistics()
52
+ {
53
+ $statUri = '/__LSCACHE/STATS';
54
+ $base = Mage::getBaseUrl();
55
+ if ((stripos($base, 'http') !== false) && ($pos = strpos($base, '://'))) {
56
+ $pos2 = strpos($base, '/', $pos+ 4);
57
+ $statBase = ($pos2 === false) ? $base : substr($base, 0, $pos2);
58
+ }
59
+ $statUri = $statBase . $statUri;
60
+
61
+ $client = new Varien_Http_Client($statUri) ;
62
+
63
+ try {
64
+ $response = $client->request() ;
65
+ $data = trim($response->getBody());
66
+ if ($data{0} !== '{') {
67
+ return null;
68
+ }
69
+
70
+ $data1 = json_decode($data, true);
71
+ $data2 = array_values($data1);
72
+ if (count($data2)) {
73
+ $stats = $data2[0];
74
+ switch ($stats['LITEMAGE_PLAN']) {
75
+ case 11: $stats['plan'] = 'LiteMage Standard';
76
+ $stats['plan_desc'] = 'up to 25000 publicly cached objects';
77
+ break;
78
+ case 3: $stats['plan'] = 'LiteMage Unlimited';
79
+ $stats['plan_desc'] = 'unlimited publicly cached objects';
80
+ break;
81
+ case 9:
82
+ default:
83
+ $stats['plan'] = 'LiteMage Starter';
84
+ $stats['plan_desc'] = 'up to 1500 publicly cached objects';
85
+ }
86
+ return $stats;
87
+ }
88
+ } catch ( Exception $e ) {
89
+ }
90
+ return null;
91
+ }
92
+
93
  public function getCrawlerStatus()
94
  {
95
  $status = Mage::getModel( 'litemage/observer_cron' )->getCrawlerStatus();
113
  return Mage::app()->useCache('layout') && Mage::app()->useCache('config');
114
  }
115
 
116
+
117
+
118
  }
app/code/community/Litespeed/Litemage/Helper/Esi.php CHANGED
@@ -62,9 +62,6 @@ class Litespeed_Litemage_Helper_Esi
62
  {
63
  $this->_config = Mage::helper('litemage/data');
64
  $this->_isDebug = $this->_config->isDebug();
65
- if (isset($_SERVER['LSCACHE_VARY_COOKIE'])) {
66
- $this->_defaultEnvVaryCookie = $_SERVER['LSCACHE_VARY_COOKIE'];
67
- }
68
  }
69
 
70
  public function isDebug()
@@ -328,7 +325,7 @@ class Litespeed_Litemage_Helper_Esi
328
 
329
  if (isset($bconf['is_dynamic'])) {
330
  $urlOptions['pc'] = $bconf['pc'];
331
- if (!empty($block->getTemplate())) {
332
  $urlOptions['pt'] = $block->getTemplate();
333
  }
334
  }
62
  {
63
  $this->_config = Mage::helper('litemage/data');
64
  $this->_isDebug = $this->_config->isDebug();
 
 
 
65
  }
66
 
67
  public function isDebug()
325
 
326
  if (isset($bconf['is_dynamic'])) {
327
  $urlOptions['pc'] = $bconf['pc'];
328
+ if (!is_null($block->getTemplate())) {
329
  $urlOptions['pt'] = $block->getTemplate();
330
  }
331
  }
app/code/community/Litespeed/Litemage/Model/Observer/Cron.php CHANGED
@@ -28,6 +28,7 @@ class Litespeed_Litemage_Model_Observer_Cron extends Varien_Event_Observer
28
  const WARMUP_MAP_FILE = 'litemage_warmup_urlmap' ;
29
  const WARMUP_META_CACHE_ID = 'litemage_warmup_meta' ;
30
  const USER_AGENT = 'litemage_walker' ;
 
31
  const ENV_COOKIE_NAME = '_lscache_vary' ;
32
 
33
  protected $_meta ; // time, curfileline
@@ -47,7 +48,7 @@ class Litespeed_Litemage_Model_Observer_Cron extends Varien_Event_Observer
47
  $helper = Mage::helper('litemage/data') ;
48
  $this->_isDebug = $helper->isDebug() ;
49
  if ($this->_isDebug) {
50
- $this->_debugTag = 'LiteMage [' . self::USER_AGENT . ':';
51
  if (isset($_SERVER['USER']))
52
  $this->_debugTag .= $_SERVER['USER'];
53
  elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
@@ -175,7 +176,6 @@ class Litespeed_Litemage_Model_Observer_Cron extends Varien_Event_Observer
175
  }
176
 
177
  $options = array(
178
- CURLOPT_USERAGENT => self::USER_AGENT,
179
  CURLOPT_SSL_VERIFYPEER => 0,
180
  CURLOPT_TIMEOUT => 180
181
  );
@@ -189,9 +189,15 @@ class Litespeed_Litemage_Model_Observer_Cron extends Varien_Event_Observer
189
  if ($curCookie) {
190
  $curlOptions[CURLOPT_COOKIE] = $curCookie;
191
  }
 
 
 
 
 
 
 
192
 
193
  if ($this->_isDebug) {
194
- $id = $this->_curList['id'];
195
  $this->_debugLog('crawling ' . $id . ' urls (cur_pos:' . $this->_meta[$id]['curpos'] . ') with cookie ' . $curCookie . ' ' . print_r($urls, true));
196
  }
197
 
@@ -455,6 +461,7 @@ class Litespeed_Litemage_Model_Observer_Cron extends Varien_Event_Observer
455
  'gentime' => 0,
456
  'listsize' => 0,
457
  'env' => $storeInfo['env'],
 
458
  'curpos' => 0,
459
  'curvary' => '',
460
  'queried' => 0,
@@ -525,6 +532,7 @@ class Litespeed_Litemage_Model_Observer_Cron extends Varien_Event_Observer
525
  elseif (($m['endtime'] + $m['interval'] < $curtime)) {
526
  // expired
527
  $expired[$listId] = $m['priority'];
 
528
  $tmpmsg = 'Run interval passed, will restart.';
529
  }
530
  else {
@@ -538,8 +546,10 @@ class Litespeed_Litemage_Model_Observer_Cron extends Varien_Event_Observer
538
  $m['gentime'] = 0;
539
  if ($m['endtime'] == 0)
540
  $unfinished[$listId] = $m['priority'];
541
- else
542
  $expired[$listId] = $m['priority'];
 
 
543
  }
544
  }
545
  else {
28
  const WARMUP_MAP_FILE = 'litemage_warmup_urlmap' ;
29
  const WARMUP_META_CACHE_ID = 'litemage_warmup_meta' ;
30
  const USER_AGENT = 'litemage_walker' ;
31
+ const FAST_USER_AGENT = 'litemage_runner' ;
32
  const ENV_COOKIE_NAME = '_lscache_vary' ;
33
 
34
  protected $_meta ; // time, curfileline
48
  $helper = Mage::helper('litemage/data') ;
49
  $this->_isDebug = $helper->isDebug() ;
50
  if ($this->_isDebug) {
51
+ $this->_debugTag = 'LiteMage [cron:';
52
  if (isset($_SERVER['USER']))
53
  $this->_debugTag .= $_SERVER['USER'];
54
  elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
176
  }
177
 
178
  $options = array(
 
179
  CURLOPT_SSL_VERIFYPEER => 0,
180
  CURLOPT_TIMEOUT => 180
181
  );
189
  if ($curCookie) {
190
  $curlOptions[CURLOPT_COOKIE] = $curCookie;
191
  }
192
+ $id = $this->_curList['id'];
193
+ if (isset($this->_meta[$id]['ua'])) {
194
+ $curlOptions[CURLOPT_USERAGENT] = $this->_meta[$id]['ua'];
195
+ }
196
+ else {
197
+ $curlOptions[CURLOPT_USERAGENT] = self::FAST_USER_AGENT;
198
+ }
199
 
200
  if ($this->_isDebug) {
 
201
  $this->_debugLog('crawling ' . $id . ' urls (cur_pos:' . $this->_meta[$id]['curpos'] . ') with cookie ' . $curCookie . ' ' . print_r($urls, true));
202
  }
203
 
461
  'gentime' => 0,
462
  'listsize' => 0,
463
  'env' => $storeInfo['env'],
464
+ 'ua' => self::FAST_USER_AGENT,
465
  'curpos' => 0,
466
  'curvary' => '',
467
  'queried' => 0,
532
  elseif (($m['endtime'] + $m['interval'] < $curtime)) {
533
  // expired
534
  $expired[$listId] = $m['priority'];
535
+ $m['ua'] = self::USER_AGENT;
536
  $tmpmsg = 'Run interval passed, will restart.';
537
  }
538
  else {
546
  $m['gentime'] = 0;
547
  if ($m['endtime'] == 0)
548
  $unfinished[$listId] = $m['priority'];
549
+ else {
550
  $expired[$listId] = $m['priority'];
551
+ $m['ua'] = self::USER_AGENT;
552
+ }
553
  }
554
  }
555
  else {
app/code/community/Litespeed/Litemage/Model/Observer/Purge.php CHANGED
@@ -140,9 +140,9 @@ class Litespeed_Litemage_Model_Observer_Purge extends Varien_Event_Observer
140
  $adminSession->addSuccess($config->__('Notified LiteSpeed web server to purge all cached items.')) ;
141
  }
142
 
143
- protected function _purgeTagByAdmin( $tags, $message = '' )
144
  {
145
- Mage::helper('litemage/esi')->setPurgeHeader($tags, 'purgeTagByAdmin') ;
146
  if ( $message ) {
147
  $this->_getAdminSession()->addSuccess(Mage::helper('litemage/data')->__('Notified LiteSpeed web server to purge ' . $message)) ;
148
  }
@@ -184,7 +184,7 @@ class Litespeed_Litemage_Model_Observer_Purge extends Varien_Event_Observer
184
  if ( Mage::helper('litemage/data')->moduleEnabled() ) {
185
  $product = $eventObj->getEvent()->getProduct() ;
186
  if ( $product != null ) {
187
- $this->_purgeByProduct($product) ;
188
  }
189
  }
190
  } catch ( Exception $e ) {
@@ -193,14 +193,38 @@ class Litespeed_Litemage_Model_Observer_Purge extends Varien_Event_Observer
193
  }
194
 
195
  // global cataloginventory_stock_item_save_after
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  public function purgeCatalogProductByStock( $eventObj )
197
  {
198
  try {
199
  if ( Mage::helper('litemage/data')->moduleEnabled() ) {
200
  $item = $eventObj->getEvent()->getItem() ;
201
- if ( $item->getStockStatusChangedAutomatically() || ($item->getOriginalInventoryQty() <= 0 && (($item->getQty() + $item->getQtyCorrection()) > 0)) ) {
 
 
 
 
 
202
  $product = Mage::getModel('catalog/product')->load($item->getProductId());
203
- $this->_purgeByProduct($product) ;
204
  }
205
  }
206
  } catch ( Exception $e ) {
@@ -227,7 +251,7 @@ class Litespeed_Litemage_Model_Observer_Purge extends Varien_Event_Observer
227
  }
228
  }
229
 
230
- protected function _purgeByProduct( $product )
231
  {
232
  $productId = $product->getId() ;
233
  if ( $this->_curProductId == $productId )
@@ -271,7 +295,7 @@ class Litespeed_Litemage_Model_Observer_Purge extends Varien_Event_Observer
271
  $tags[] = Litespeed_Litemage_Helper_Esi::TAG_PREFIX_CATEGORY . $cid ;
272
  }
273
 
274
- $this->_purgeTagByAdmin($tags, $product->getName()) ;
275
  }
276
 
277
  /* protected function _addDelta($urls)
140
  $adminSession->addSuccess($config->__('Notified LiteSpeed web server to purge all cached items.')) ;
141
  }
142
 
143
+ protected function _purgeTagByAdmin( $tags, $message = '', $reason ='' )
144
  {
145
+ Mage::helper('litemage/esi')->setPurgeHeader($tags, 'purgeTagByAdmin ' . $reason) ;
146
  if ( $message ) {
147
  $this->_getAdminSession()->addSuccess(Mage::helper('litemage/data')->__('Notified LiteSpeed web server to purge ' . $message)) ;
148
  }
184
  if ( Mage::helper('litemage/data')->moduleEnabled() ) {
185
  $product = $eventObj->getEvent()->getProduct() ;
186
  if ( $product != null ) {
187
+ $this->_purgeByProduct($product, 'adminPurgeCatalogProduct') ;
188
  }
189
  }
190
  } catch ( Exception $e ) {
193
  }
194
 
195
  // global cataloginventory_stock_item_save_after
196
+ public function purgeCatalogProductByStock_orig( $eventObj )
197
+ {
198
+ try {
199
+ if ( Mage::helper('litemage/data')->moduleEnabled() ) {
200
+ $item = $eventObj->getEvent()->getItem() ;
201
+ if ( $item->getStockStatusChangedAutomatically() || ($item->getOriginalInventoryQty() <= 0 && $item->getQty() > 0 && $item->getQtyCorrection() > 0) ) {
202
+ $product = Mage::getModel('catalog/product')->load($item->getProductId());
203
+ $this->_purgeByProduct($product, 'purgeCatalogProductByStock') ;
204
+ Mage::helper('litemage/data')->debugMesg("in cataloginventory_stock_item_save_after with qy change");
205
+ }
206
+ else {
207
+ Mage::helper('litemage/data')->debugMesg("in cataloginventory_stock_item_save_after -- no change");
208
+ }
209
+ }
210
+ } catch ( Exception $e ) {
211
+ Mage::helper('litemage/data')->debugMesg('Error on purgeCatalogProductByStock: ' . $e->getMessage()) ;
212
+ }
213
+ }
214
+
215
  public function purgeCatalogProductByStock( $eventObj )
216
  {
217
  try {
218
  if ( Mage::helper('litemage/data')->moduleEnabled() ) {
219
  $item = $eventObj->getEvent()->getItem() ;
220
+
221
+ if ( $item->getStockStatusChangedAutomatically() ) {
222
+ $product = Mage::getModel('catalog/product')->load($item->getProductId());
223
+ $this->_purgeByProduct($product, 'purgeCatalogProductByStock - getStockStatusChangedAutomatically') ;
224
+ }
225
+ else if ($item->getOriginalInventoryQty() <= 0 && $item->getQty() > 0 && $item->getQtyCorrection() > 0 ) {
226
  $product = Mage::getModel('catalog/product')->load($item->getProductId());
227
+ $this->_purgeByProduct($product, 'purgeCatalogProductByStock - qty ') ;
228
  }
229
  }
230
  } catch ( Exception $e ) {
251
  }
252
  }
253
 
254
+ protected function _purgeByProduct( $product, $reason )
255
  {
256
  $productId = $product->getId() ;
257
  if ( $this->_curProductId == $productId )
295
  $tags[] = Litespeed_Litemage_Helper_Esi::TAG_PREFIX_CATEGORY . $cid ;
296
  }
297
 
298
+ $this->_purgeTagByAdmin($tags, $product->getName(), $reason) ;
299
  }
300
 
301
  /* protected function _addDelta($urls)
app/code/community/Litespeed/Litemage/etc/config.xml CHANGED
@@ -26,7 +26,7 @@
26
  <config>
27
  <modules>
28
  <Litespeed_Litemage>
29
- <version>1.1.1</version>
30
  </Litespeed_Litemage>
31
  </modules>
32
  <global>
26
  <config>
27
  <modules>
28
  <Litespeed_Litemage>
29
+ <version>1.1.2</version>
30
  </Litespeed_Litemage>
31
  </modules>
32
  <global>
app/code/community/Litespeed/Litemage/etc/system.xml CHANGED
@@ -27,7 +27,7 @@
27
  <config>
28
  <tabs>
29
  <Litespeed_Litemage translate="label">
30
- <label>LiteMage Cache 1.1.1</label>
31
  <sort_order>5000</sort_order>
32
  </Litespeed_Litemage>
33
  </tabs>
27
  <config>
28
  <tabs>
29
  <Litespeed_Litemage translate="label">
30
+ <label>LiteMage Cache 1.1.2</label>
31
  <sort_order>5000</sort_order>
32
  </Litespeed_Litemage>
33
  </tabs>
app/design/adminhtml/default/default/template/litemage/cache_management.phtml CHANGED
@@ -38,8 +38,48 @@ if ($this->canShowButton()):
38
  <li class="error-msg">LiteMage extension requires Configuration and Layouts cache types to be enabled. It will not function properly with these settings disabled.
39
  </li></ul></div>';
40
  }
41
- ?>
42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  <table class="form-list">
44
  <tr>
45
  <td class="scope-label">
@@ -104,7 +144,7 @@ if ($status = $this->getCrawlerStatus()) : ?>
104
  </div>
105
  </form>
106
 
107
- <div class="grid"><div class="hor-scroll"><table>
108
  <tr class="headings">
109
  <th class="no-link a-center"><?php echo $lmhelper->__('Warm-up List')
110
  . '<br><a href="' . $status['url_reset'] . '" class="form-button" title="Click to reset all crawler queues">' . $lmhelper->__('Reset All') . '</a>'; ?>
38
  <li class="error-msg">LiteMage extension requires Configuration and Layouts cache types to be enabled. It will not function properly with these settings disabled.
39
  </li></ul></div>';
40
  }
 
41
 
42
+
43
+ if ($stats = $this->getCacheStatistics()) {
44
+ ?>
45
+
46
+ <div class="grid"><div><table cellspacing="0" class="data">
47
+ <tr class="headings">
48
+ <th class="no-link a-center"><?php echo $lmhelper->__('LiteMage Cache Statistics')
49
+ . '<br>' . $lmhelper->__('Current Plan'); ?>
50
+ </th>
51
+ <th class="no-link a-right"><?php echo $lmhelper->__('Public Cache Hits')
52
+ . ' <br>' . $lmhelper->__('Private Cache Hits'); ?></th>
53
+ <th class="no-link a-right"><?php echo $lmhelper->__('Full Page Hits')
54
+ . '<br>' . $lmhelper->__('Partial Page Hits'); ?></th>
55
+ <th class="no-link a-right"><?php echo $lmhelper->__('LiteMage Cached Objects') . '<br>' . $lmhelper->__('Limited by Plan'); ?></th>
56
+ </tr>
57
+ <?php
58
+ //$buf = (($i % 2) == 0) ? '<tr class="even">' : '<tr>';
59
+ $buf = '<tr class="even"><td class="a-center">' . $stats['plan'] . '<br>(' . $stats['plan_desc']
60
+ . ') <div class="a-right field-tooltip"><div>Available Plans:<hr>LiteMage Starter (1,500 publicly cached objects)<br>LiteMage Standard (25,000 publicly cached objects)<br>LiteMage Unlimited</div></div></td>'
61
+ . '<td class="a-right">' . $stats['PUB_HITS']
62
+ . ' <div class="a-left field-tooltip"><div>Number of requests that hit public cache since last flush all</div></div><br>'
63
+ . $stats['PVT_HITS']
64
+ . ' <div class="a-left field-tooltip"><div>Number of requests that hit private cache since last flush all</div></div></td>'
65
+ . '<td class="a-right">' . $stats['FULLPAGE_HITS']
66
+ . ' <div class="a-left field-tooltip"><div>Number of requests fully served from cache (no PHP invoked) since last flush all</div></div><br>'
67
+ . $stats['PARTIAL_HITS']
68
+ . ' <div class="a-left field-tooltip"><div>Number of requests partially served from cache (some data retrieved from Magento) since last flush all</div></div></td>'
69
+ . '<td class="a-right">' . $stats['LITEMAGE_OBJS']
70
+ . ' <div class="a-left field-tooltip"><div>Current LiteMage cached object count</div></div><br>'
71
+ . $stats['LITEMAGE_LIMITED']
72
+ . ' <div class="a-left field-tooltip"><div>Number of requests not served from cache due to plan limitation</div></div></td>'
73
+ . "</tr>\n";
74
+ echo $buf;
75
+
76
+ ?>
77
+
78
+ </table>
79
+ </div></div>
80
+ <?php
81
+ }
82
+ ?>
83
  <table class="form-list">
84
  <tr>
85
  <td class="scope-label">
144
  </div>
145
  </form>
146
 
147
+ <div class="grid"><div class="hor-scroll"><table cellspacing="0" >
148
  <tr class="headings">
149
  <th class="no-link a-center"><?php echo $lmhelper->__('Warm-up List')
150
  . '<br><a href="' . $status['url_reset'] . '" class="form-button" title="Click to reset all crawler queues">' . $lmhelper->__('Reset All') . '</a>'; ?>
package.xml CHANGED
@@ -1,18 +1,19 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>LiteSpeed_LiteMage</name>
4
- <version>1.1.1</version>
5
  <stability>stable</stability>
6
  <license uri="https://opensource.org/licenses/GPL-3.0">GPLv3</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>LiteMage Cache speeds up Magento by automatically integrating Magento with LiteSpeed's superior ESI implementation.</summary>
10
  <description>LiteMage Cache is a powerful Magento page caching utility built into LiteSpeed Web Server. It combines superior ESI implementation with easy set up. LiteMage Cache contains a number of optimizations, including combined subrequests, that give it faster, more efficient performance than other page caching utilities. In addition, because it is part of the web server, LiteMage Cache does away with the communication problems and overhead other page caching solutions suffer from. The LiteMage Magento extension then automatically integrates Magento installations with LiteSpeed's top-of-the-line ESI implementation, combining the greatest Magento performance enhancement possible with a painless set up.</description>
11
- <notes>Fixed a Crawler bug introduced in version 1.1 where the second round of crawling would not start properly until the cache was flushed.</notes>
 
12
  <authors><author><name>LiteSpeed Technologies</name><user>LiteSpeedTech</user><email>lsong@litespeedtech.com</email></author></authors>
13
- <date>2016-05-31</date>
14
- <time>15:02:47</time>
15
- <contents><target name="magecommunity"><dir name="Litespeed"><dir name="Litemage"><dir name="Block"><dir name="Adminhtml"><dir name="Cache"><file name="Management.php" hash="a16c9978a7177adf4aacc00a4a18476a"/></dir></dir><dir name="Core"><file name="Esi.php" hash="32da90253e38aedf67a8c4619bfc983b"/><file name="Messages.php" hash="da581eb4adaa1ac4e2d4b86ff30f08d4"/><file name="Xml.php" hash="6c7d088368f06151be14609dde9afade"/></dir><dir name="Inject"><file name="Jsvar.php" hash="cc0590fe211c81d6d29de570503fe8fd"/><file name="Nickname.php" hash="3edf87b7d3f3da4093110bd4c98e0738"/></dir></dir><dir name="Helper"><file name="Data.php" hash="0b4db22d27711c3c5b79da2b35b9841d"/><file name="Esi.php" hash="54036ce774753a7a4922d4d804b60562"/><file name="Viewvary.php" hash="00b51b413114123c8e5d7bfd44e1cfdc"/></dir><dir name="Model"><dir name="Config"><dir name="Backend"><file name="WarmUp.php" hash="663ecf7689115059eb94898f37adeb6f"/></dir><dir name="Source"><file name="CustomerGroup.php" hash="2aa52d9a1614a545035267958be0656f"/><file name="EnableWarmUp.php" hash="d32dd158463297672dfb58628007a88c"/></dir></dir><file name="EsiData.php" hash="5a7fa9094a5286e317a15d7dc133676b"/><file name="EsiLayout.php" hash="8e382410414f467c69e818380872113e"/><dir name="Layout"><file name="EsiUpdate.php" hash="d11658321942742ba38cad1a7558f1f6"/><file name="Master.php" hash="1fae1314f099070df8637f53e0d2d1f2"/><file name="Update.php" hash="bc4b131d642853f009b6278b06843885"/></dir><dir name="Observer"><file name="Cron.php" hash="eba0ab40c49edeaa4b0d589ca4fabe9a"/><file name="Esi.php" hash="916293a6e45da6d2f2663a9f3908e4e8"/><file name="Purge.php" hash="aa3672d74e943a63a6267c2e4025e05c"/></dir><file name="Session.php" hash="558a80fb45a532af59727ae5657cd380"/><file name="Translate.php" hash="35326b8d2214f516d7dba82519902529"/></dir><dir name="controllers"><file name="AdminController.php" hash="d4d81dfdcb28354a7aabd9d9f6f10c86"/><dir name="Adminhtml"><file name="LitemageCacheController.php" hash="18b8cd29b5cf0fe20bd8d18d515fd79d"/></dir><file name="EsiController.php" hash="8bce324af8bfbcd085fe4b8f020e4db8"/></dir><dir name="etc"><file name="config.xml" hash="eb83dcbb7d4082987e86e840c487aa98"/><file name="system.xml" hash="07ffb6d9f6b58f0485eb8cd0e0cbaafa"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="litemage.xml" hash="70c8a6fc5f5eaf99b8c0648a33bb3b7d"/></dir><dir name="template"><dir name="litemage"><file name="cache_management.phtml" hash="3ffb2b9e4351d0e99669c3025a565179"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="litemage.xml" hash="4c840b12cc6246f68b1b028f0ef1056d"/></dir><dir name="template"><dir name="litemage"><dir name="inject"><file name="jsvar.phtml" hash="5bbd9992e7ba5925d09f21cf03237676"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Litespeed_Litemage.xml" hash="ba0c8904bc89219c6829e37cc14d9bdd"/></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.3.0</min><max>7.1.0</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>LiteSpeed_LiteMage</name>
4
+ <version>1.1.2</version>
5
  <stability>stable</stability>
6
  <license uri="https://opensource.org/licenses/GPL-3.0">GPLv3</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>LiteMage Cache speeds up Magento by automatically integrating Magento with LiteSpeed's superior ESI implementation.</summary>
10
  <description>LiteMage Cache is a powerful Magento page caching utility built into LiteSpeed Web Server. It combines superior ESI implementation with easy set up. LiteMage Cache contains a number of optimizations, including combined subrequests, that give it faster, more efficient performance than other page caching utilities. In addition, because it is part of the web server, LiteMage Cache does away with the communication problems and overhead other page caching solutions suffer from. The LiteMage Magento extension then automatically integrates Magento installations with LiteSpeed's top-of-the-line ESI implementation, combining the greatest Magento performance enhancement possible with a painless set up.</description>
11
+ <notes>Added cached objects counter and statistics to the Cache Management page.&#xD;
12
+ Fixed a bug that could result in a blank page after LiteMage installation.</notes>
13
  <authors><author><name>LiteSpeed Technologies</name><user>LiteSpeedTech</user><email>lsong@litespeedtech.com</email></author></authors>
14
+ <date>2016-06-17</date>
15
+ <time>18:40:32</time>
16
+ <contents><target name="magecommunity"><dir name="Litespeed"><dir name="Litemage"><dir name="Block"><dir name="Adminhtml"><dir name="Cache"><file name="Management.php" hash="c84719997fb95a4f0cff711f20de08bd"/></dir></dir><dir name="Core"><file name="Esi.php" hash="32da90253e38aedf67a8c4619bfc983b"/><file name="Messages.php" hash="da581eb4adaa1ac4e2d4b86ff30f08d4"/><file name="Xml.php" hash="6c7d088368f06151be14609dde9afade"/></dir><dir name="Inject"><file name="Jsvar.php" hash="cc0590fe211c81d6d29de570503fe8fd"/><file name="Nickname.php" hash="3edf87b7d3f3da4093110bd4c98e0738"/></dir></dir><dir name="Helper"><file name="Data.php" hash="0b4db22d27711c3c5b79da2b35b9841d"/><file name="Esi.php" hash="c8223dd743cfadacb811bbc4e46aa487"/><file name="Viewvary.php" hash="00b51b413114123c8e5d7bfd44e1cfdc"/></dir><dir name="Model"><dir name="Config"><dir name="Backend"><file name="WarmUp.php" hash="663ecf7689115059eb94898f37adeb6f"/></dir><dir name="Source"><file name="CustomerGroup.php" hash="2aa52d9a1614a545035267958be0656f"/><file name="EnableWarmUp.php" hash="d32dd158463297672dfb58628007a88c"/></dir></dir><file name="EsiData.php" hash="5a7fa9094a5286e317a15d7dc133676b"/><file name="EsiLayout.php" hash="8e382410414f467c69e818380872113e"/><dir name="Layout"><file name="EsiUpdate.php" hash="d11658321942742ba38cad1a7558f1f6"/><file name="Master.php" hash="1fae1314f099070df8637f53e0d2d1f2"/><file name="Update.php" hash="bc4b131d642853f009b6278b06843885"/></dir><dir name="Observer"><file name="Cron.php" hash="f62a6d3778b9f7678dc58cac5b580cdb"/><file name="Esi.php" hash="916293a6e45da6d2f2663a9f3908e4e8"/><file name="Purge.php" hash="4945c3659507ec3d00390a6273287899"/></dir><file name="Session.php" hash="558a80fb45a532af59727ae5657cd380"/><file name="Translate.php" hash="35326b8d2214f516d7dba82519902529"/></dir><dir name="controllers"><file name="AdminController.php" hash="d4d81dfdcb28354a7aabd9d9f6f10c86"/><dir name="Adminhtml"><file name="LitemageCacheController.php" hash="18b8cd29b5cf0fe20bd8d18d515fd79d"/></dir><file name="EsiController.php" hash="8bce324af8bfbcd085fe4b8f020e4db8"/></dir><dir name="etc"><file name="config.xml" hash="b105a16dd71e90295ed4c37a817fdaed"/><file name="system.xml" hash="3a4e5fa00857741522977101b1ad696b"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="litemage.xml" hash="70c8a6fc5f5eaf99b8c0648a33bb3b7d"/></dir><dir name="template"><dir name="litemage"><file name="cache_management.phtml" hash="17f174bf28b463d13938e4ac42678260"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="litemage.xml" hash="4c840b12cc6246f68b1b028f0ef1056d"/></dir><dir name="template"><dir name="litemage"><dir name="inject"><file name="jsvar.phtml" hash="5bbd9992e7ba5925d09f21cf03237676"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Litespeed_Litemage.xml" hash="ba0c8904bc89219c6829e37cc14d9bdd"/></dir></target></contents>
17
  <compatible/>
18
  <dependencies><required><php><min>5.3.0</min><max>7.1.0</max></php></required></dependencies>
19
  </package>