123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- <?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;
- }
- }
|