public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Commit
cache JS-File to reduce response-time
no message
3f6a2fc7
data/web/inc/footer.inc.php | 9 ++++++++-
data/web/inc/header.inc.php | 9 ++++++++-
data/web/inc/lib/CSSminifierExtended.php | 18 ++++++++++++++++++
data/web/inc/lib/JSminifierExtended.php | 18 ++++++++++++++++++
data/web/inc/prerequisites.inc.php | 8 ++++++--
5 files changed, 58 insertions(+), 4 deletions(-)
create mode 100644 data/web/inc/lib/CSSminifierExtended.php
create mode 100644 data/web/inc/lib/JSminifierExtended.php
Diff
diff --git a/data/web/inc/footer.inc.php b/data/web/inc/footer.inc.php
index 8a0dba34..ae8c80c4 100644
--- a/data/web/inc/footer.inc.php
+++ b/data/web/inc/footer.inc.php
@@ -3,7 +3,14 @@ require_once $_SERVER['DOCUMENT_ROOT'] . '/modals/footer.php';
logger();
?>
<div style="margin-bottom: 100px;"></div>
-<script type='text/javascript'><?=$js_minifier->minify();?></script>
+<script type='text/javascript'><?php
+ $JSPath = '/tmp/' . $js_minifier->getDataHash() . '.js';
+ if(file_exists($JSPath)) {
+ echo file_get_contents($JSPath);
+ } else {
+ echo $js_minifier->minify($JSPath);
+ }
+ ?></script>
<script>
<?php
$lang_footer = json_encode($lang['footer']);
diff --git a/data/web/inc/header.inc.php b/data/web/inc/header.inc.php
index 4b223140..1ddfa74c 100644
--- a/data/web/inc/header.inc.php
+++ b/data/web/inc/header.inc.php
@@ -30,7 +30,14 @@
$css_minifier->add('/web/css/site/index.css');
}
?>
- <style><?=$css_minifier->minify();?></style>
+ <style><?php
+ $CSSPath = '/tmp/' . $css_minifier->getDataHash() . '.css';
+ if(file_exists($CSSPath)) {
+ echo file_get_contents($CSSPath);
+ } else {
+ echo $css_minifier->minify($CSSPath);
+ }
+ ?></style>
<?php if (strtolower(trim($DEFAULT_THEME)) != "lumen"): ?>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/bootswatch/3.3.7/<?= strtolower(trim($DEFAULT_THEME)); ?>/bootstrap.min.css">
<?php endif; ?>
diff --git a/data/web/inc/lib/CSSminifierExtended.php b/data/web/inc/lib/CSSminifierExtended.php
new file mode 100644
index 00000000..125381c4
--- /dev/null
+++ b/data/web/inc/lib/CSSminifierExtended.php
@@ -0,0 +1,18 @@
+<?php
+
+use MatthiasMullie\Minify\CSS;
+
+class CSSminifierExtended extends CSS {
+
+ public function getDataHash() {
+ return sha1(json_encode($this->accessProtected($this,'data')));
+ }
+
+ private function accessProtected($obj, $prop) {
+ $reflection = new ReflectionClass($obj);
+ $property = $reflection->getProperty($prop);
+ $property->setAccessible(true);
+ return $property->getValue($obj);
+ }
+
+}
\ No newline at end of file
diff --git a/data/web/inc/lib/JSminifierExtended.php b/data/web/inc/lib/JSminifierExtended.php
new file mode 100644
index 00000000..c891cb81
--- /dev/null
+++ b/data/web/inc/lib/JSminifierExtended.php
@@ -0,0 +1,18 @@
+<?php
+
+use MatthiasMullie\Minify\JS;
+
+class JSminifierExtended extends JS {
+
+ public function getDataHash() {
+ return sha1(json_encode($this->accessProtected($this,'data')));
+ }
+
+ private function accessProtected($obj, $prop) {
+ $reflection = new ReflectionClass($obj);
+ $property = $reflection->getProperty($prop);
+ $property->setAccessible(true);
+ return $property->getValue($obj);
+ }
+
+}
\ No newline at end of file
diff --git a/data/web/inc/prerequisites.inc.php b/data/web/inc/prerequisites.inc.php
index e0cc5993..7215de28 100644
--- a/data/web/inc/prerequisites.inc.php
+++ b/data/web/inc/prerequisites.inc.php
@@ -19,16 +19,20 @@ require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/lib/vendor/autoload.php';
// Load Sieve
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/lib/sieve/SieveParser.php';
+// minifierExtended
+require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/lib/JSminifierExtended.php';
+require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/lib/CSSminifierExtended.php';
+
// Minify JS
use MatthiasMullie\Minify;
-$js_minifier = new Minify\JS();
+$js_minifier = new JSminifierExtended();
$js_dir = array_diff(scandir('/web/js/build'), array('..', '.'));
foreach ($js_dir as $js_file) {
$js_minifier->add('/web/js/build/' . $js_file);
}
// Minify CSS
-$css_minifier = new Minify\CSS();
+$css_minifier = new CSSminifierExtended();
$css_dir = array_diff(scandir('/web/css/build'), array('..', '.'));
foreach ($css_dir as $css_file) {
$css_minifier->add('/web/css/build/' . $css_file);