mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
76 lines
2.0 KiB
PHP
76 lines
2.0 KiB
PHP
<?php
|
|
/***
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
namespace Magento\PageCache\Model\App;
|
|
|
|
class PageCachePlugin
|
|
{
|
|
/**
|
|
* Label for compressed cache entries
|
|
*/
|
|
const COMPRESSION_PREFIX = 'COMPRESSED_CACHE_';
|
|
|
|
/**
|
|
* Enable type management by adding type tag, and enable cache compression
|
|
*
|
|
* @param \Magento\Framework\App\PageCache\Cache $subject
|
|
* @param string $data
|
|
* @param string $identifier
|
|
* @param string[] $tags
|
|
* @param int|null $lifeTime
|
|
* @return array
|
|
*
|
|
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
|
*/
|
|
public function beforeSave(
|
|
\Magento\Framework\App\PageCache\Cache $subject,
|
|
$data,
|
|
$identifier,
|
|
$tags = [],
|
|
$lifeTime = null
|
|
) {
|
|
$data = $this->handleCompression($data);
|
|
$tags[] = \Magento\PageCache\Model\Cache\Type::CACHE_TAG;
|
|
return [$data, $identifier, $tags, $lifeTime];
|
|
}
|
|
|
|
/**
|
|
* Enable cache de-compression
|
|
*
|
|
* @param \Magento\Framework\App\PageCache\Cache $subject
|
|
* @param string $result
|
|
* @return string|bool
|
|
* @throws \Magento\Framework\Exception\LocalizedException
|
|
*
|
|
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
|
*/
|
|
public function afterLoad(
|
|
\Magento\Framework\App\PageCache\Cache $subject,
|
|
$result
|
|
) {
|
|
if ($result && strpos($result, self::COMPRESSION_PREFIX) === 0) {
|
|
$result = function_exists('gzuncompress')
|
|
? gzuncompress(substr($result, strlen(self::COMPRESSION_PREFIX)))
|
|
: false;
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Label compressed entries and check if gzcompress exists
|
|
*
|
|
* @param string $data
|
|
* @return string
|
|
*/
|
|
private function handleCompression($data)
|
|
{
|
|
if (function_exists('gzcompress')) {
|
|
$data = self::COMPRESSION_PREFIX . gzcompress($data);
|
|
}
|
|
return $data;
|
|
}
|
|
}
|