Introduce $config['gzip_static']

This commit is contained in:
Chen-Pang He 2014-06-30 15:50:20 +08:00 committed by czaks
parent f4fd816202
commit 97069ea490

View File

@ -1,7 +1,7 @@
<?php <?php
/* /*
* Copyright (c) 2010-2013 Tinyboard Development Group * Copyright (c) 2010-2014 Tinyboard Development Group
*/ */
if (realpath($_SERVER['SCRIPT_FILENAME']) == str_replace('\\', '/', __FILE__)) { if (realpath($_SERVER['SCRIPT_FILENAME']) == str_replace('\\', '/', __FILE__)) {
@ -546,6 +546,28 @@ function file_write($path, $data, $simple = false, $skip_purge = false) {
if (!fclose($fp)) if (!fclose($fp))
error('Unable to close file: ' . $path); error('Unable to close file: ' . $path);
/**
* Create gzipped file.
*
* When writing into a file foo.bar and the size is larger or equal to 1
* KiB, this also produces the gzipped version foo.bar.gz
*
* This is useful with nginx with gzip_static on.
*/
if ($config['gzip_static']) {
$gzpath = "$path.gz";
if ($bytes & ~0x3ff) { // if ($bytes >= 1024)
if (file_put_contents($gzpath, gzencode($data), $simple ? 0 : LOCK_EX) === false)
error("Unable to write to file: $gzpath");
if (!touch($gzpath, filemtime($path), fileatime($path)))
error("Unable to touch file: $gzpath");
}
else {
@unlink($gzpath);
}
}
if (!$skip_purge && isset($config['purge'])) { if (!$skip_purge && isset($config['purge'])) {
// Purge cache // Purge cache
if (basename($path) == $config['file_index']) { if (basename($path) == $config['file_index']) {