1
0
mirror of https://github.com/mrclay/minify.git synced 2025-09-05 19:52:53 +02:00

14 Commits

Author SHA1 Message Date
Elan Ruusamäe
dc02cdfba7 Fill changelog for 3.0.14 2023-05-05 15:03:06 +03:00
Elan Ruusamäe
23f055d3f5 Merge pull request #705 from rossbearman/monolog-v3 2023-04-13 23:03:05 +03:00
Ross Bearman
4970127e91 Support monolog v3 2023-04-12 16:11:35 +01:00
Elan Ruusamäe
39c37bdd8c Merge pull request #700 from turbulent/feat/allow-invalidation 2022-12-15 12:42:05 +02:00
Adrien Poupa
4a9d0595e3 feat: Allow invalidation from manual invocation 2022-12-14 15:21:52 -05:00
Elan Ruusamäe
ca8fdc6fdd Merge pull request #699 from tamakianimalife/php8.2
Add property declaration
2022-12-14 20:52:27 +02:00
tamakianimalife
8c69866874 Add property declaration 2022-12-14 17:30:53 +09:00
Elan Ruusamäe
ae5b9f0bfb Add changelog for #688 2022-10-03 00:12:43 +03:00
Elan Ruusamäe
e74adc4f6b Add changelog for 3.0.13 release 2022-10-03 00:11:04 +03:00
Elan Ruusamäe
5dee6538be Merge pull request #697 from croensch/apcu 2022-10-03 00:09:24 +03:00
Christoph Rönsch
455084b284 Minify_Cache_APCu replaces APC 2022-10-01 22:23:52 +02:00
Elan Ruusamäe
5112bb50f4 Merge pull request #688 from mrclay/lesserphp 2022-05-14 14:15:55 +03:00
Elan Ruusamäe
b314554a0f Remove php 7.4 block for LessSourceTest 2021-03-11 17:54:46 +02:00
Elan Ruusamäe
9dac0ac873 Require marcusschwarz/lesserphp ^0.5.5
This resolves php 7.4 compatibility
2021-03-11 17:54:29 +02:00
9 changed files with 192 additions and 7 deletions

View File

@@ -5,6 +5,26 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [3.0.14] - 2023-05-05
- Support monolog v3, [#705]
- Allow invalidation from manual invocation, [#700]
- Add property declaration, [#699]
[3.0.14]: https://github.com/mrclay/minify/compare/3.0.13...3.0.14
[#705]: https://github.com/mrclay/minify/pull/705
[#700]: https://github.com/mrclay/minify/pull/700
[#699]: https://github.com/mrclay/minify/pull/699
## [3.0.13] - 2022-10-03
- Add `Minify_Cache_APCu` to replace `Minify_Cache_APC`, [#697]
- Require `marcusschwarz/lesserphp:^0.5.5` to fix php 7.4 compatibility, [#688]
[3.0.13]: https://github.com/mrclay/minify/compare/3.0.12...3.0.13
[#697]: https://github.com/mrclay/minify/pull/697
[#688]: https://github.com/mrclay/minify/pull/688
## [3.0.12] - 2022-05-14
- Update jquery to 1.12.4 to avoid xss attacks, [#692]

View File

@@ -32,8 +32,8 @@
"php": "^5.3.0 || ^7.0 || ^8.0",
"ext-pcre": "*",
"intervention/httpauth": "^2.0|^3.0",
"marcusschwarz/lesserphp": "^0.5.1",
"monolog/monolog": "~1.1|~2.0",
"marcusschwarz/lesserphp": "^0.5.5",
"monolog/monolog": "~1.1|~2.0|~3.0",
"mrclay/jsmin-php": "~2",
"mrclay/props-dic": "^2.2|^3.0",
"tubalmartin/cssmin": "~4"

View File

@@ -118,6 +118,7 @@ class Minify
'quiet' => false, // serve() will send headers and output
'debug' => false,
'concatOnly' => false,
'invalidate' => false,
// if you override these, the response codes MUST be directly after
// the first space.
@@ -284,6 +285,7 @@ class Minify
'lastModifiedTime' => $this->options['lastModifiedTime'],
'isPublic' => $this->options['isPublic'],
'encoding' => $this->options['encodeMethod'],
'invalidate' => $this->options['invalidate'],
);
if ($this->options['maxAge'] > 0) {

View File

@@ -13,6 +13,8 @@
*
* @package Minify
* @author Chris Edwards
*
* @deprecated Use Minify_Cache_APCu
**/
class Minify_Cache_APC implements Minify_CacheInterface
{

136
lib/Minify/Cache/APCu.php Normal file
View File

@@ -0,0 +1,136 @@
<?php
/**
* Class Minify_Cache_APCu
* @package Minify
*/
/**
* APCu-based cache class for Minify
*
* <code>
* Minify::setCache(new Minify_Cache_APCu());
* </code>
*
* @package Minify
* @author Chris Edwards
**/
class Minify_Cache_APCu implements Minify_CacheInterface
{
/**
* Create a Minify_Cache_APCu object, to be passed to
* Minify::setCache().
*
*
* @param int $expire seconds until expiration (default = 0
* meaning the item will not get an expiration date)
*
* @return null
*/
public function __construct($expire = 0)
{
$this->_exp = $expire;
}
/**
* Write data to cache.
*
* @param string $id cache id
*
* @param string $data
*
* @return bool success
*/
public function store($id, $data)
{
return apcu_store($id, "{$_SERVER['REQUEST_TIME']}|{$data}", $this->_exp);
}
/**
* Get the size of a cache entry
*
* @param string $id cache id
*
* @return int size in bytes
*/
public function getSize($id)
{
if (! $this->_fetch($id)) {
return false;
}
if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) {
return mb_strlen($this->_data, '8bit');
} else {
return strlen($this->_data);
}
}
/**
* Does a valid cache entry exist?
*
* @param string $id cache id
*
* @param int $srcMtime mtime of the original source file(s)
*
* @return bool exists
*/
public function isValid($id, $srcMtime)
{
return ($this->_fetch($id) && ($this->_lm >= $srcMtime));
}
/**
* Send the cached content to output
*
* @param string $id cache id
*/
public function display($id)
{
echo $this->_fetch($id) ? $this->_data : '';
}
/**
* Fetch the cached content
*
* @param string $id cache id
*
* @return string
*/
public function fetch($id)
{
return $this->_fetch($id) ? $this->_data : '';
}
private $_exp = null;
// cache of most recently fetched id
private $_lm = null;
private $_data = null;
private $_id = null;
/**
* Fetch data and timestamp from apcu, store in instance
*
* @param string $id
*
* @return bool success
*/
private function _fetch($id)
{
if ($this->_id === $id) {
return true;
}
$ret = apcu_fetch($id);
if (false === $ret) {
$this->_id = null;
return false;
}
list($this->_lm, $this->_data) = explode('|', $ret, 2);
$this->_id = $id;
return true;
}
}

View File

@@ -22,6 +22,11 @@ class Minify_HTML
* @var boolean
*/
protected $_jsCleanComments = true;
/**
* @var string
*/
protected $_html;
/**
* "Minify" an HTML page

View File

@@ -4,10 +4,6 @@ namespace Minify\Test;
use Minify_HTML_Helper;
/**
* @requires php < 7.3
* @see https://github.com/mrclay/minify/pull/685
*/
class LessSourceTest extends TestCase
{
public function setUp()

View File

@@ -9,7 +9,6 @@ class MinifyCacheAPCTest extends TestCase
public function setUp()
{
if (!function_exists('apc_store')) {
// FIXME: is APCu extension ok too?
$this->markTestSkipped("To test this component, install APC extension");
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace Minify\Test;
use Minify_Cache_APCu;
class MinifyCacheAPCuTest extends TestCase
{
public function setUp()
{
if (!function_exists('apcu_store')) {
$this->markTestSkipped("To test this component, install APCu extension");
}
ini_set('apc.enable_cli', 1);
}
public function test1()
{
$data = str_repeat(md5(time()) . 'í', 100); // 3400 bytes in UTF-8
$id = 'Minify_test_cache';
$cache = new Minify_Cache_APCu();
$this->assertTestCache($cache, $id, $data);
}
}