1
0
mirror of https://github.com/mailcow/mailcow-dockerized.git synced 2024-12-29 02:54:55 +02:00

deliver CSS and JS as external request

This commit is contained in:
tinect 2019-10-20 21:25:58 +02:00
parent 31eb169152
commit cc1bf5d426
4 changed files with 51 additions and 19 deletions

View File

@ -32,7 +32,7 @@
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
location ~ ^/(fonts|js|css|img)/ {
expires max;
@ -205,3 +205,7 @@
location @awaitingupstream {
rewrite ^(.*)$ /_status.502.html break;
}
location ~ ^/cache/(.*)$ {
try_files $uri $uri/ /resource.php?file=$1;
}

View File

@ -3,15 +3,16 @@ require_once $_SERVER['DOCUMENT_ROOT'] . '/modals/footer.php';
logger();
?>
<div style="margin-bottom: 100px;"></div>
<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);
cleanupJS($js_minifier->getDataHash());
}
?></script>
<?php
$hash = $js_minifier->getDataHash();
$JSPath = '/tmp/' . $hash . '.js';
if(!file_exists($JSPath)) {
$js_minifier->minify($JSPath);
cleanupJS($hash);
}
?>
<script src="/cache/<?=basename($JSPath)?>"></script>
<script>
<?php
$lang_footer = json_encode($lang['footer']);

View File

@ -29,16 +29,15 @@
if ($_SERVER['REQUEST_URI'] == '/') {
$css_minifier->add('/web/css/site/index.css');
}
$hash = $css_minifier->getDataHash();
$CSSPath = '/tmp/' . $hash . '.css';
if(!file_exists($CSSPath)) {
$css_minifier->minify($CSSPath);
cleanupCSS($hash);
}
?>
<style><?php
$CSSPath = '/tmp/' . $css_minifier->getDataHash() . '.css';
if(file_exists($CSSPath)) {
echo file_get_contents($CSSPath);
} else {
echo $css_minifier->minify($CSSPath);
cleanupCSS($css_minifier->getDataHash());
}
?></style>
<link rel="stylesheet" href="/cache/<?=basename($CSSPath)?>">
<?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; ?>

28
data/web/resource.php Normal file
View File

@ -0,0 +1,28 @@
<?php
$pathinfo = pathinfo($_GET['file']);
$extension = strtolower($pathinfo['extension']);
$filepath = '/tmp/' . $pathinfo['basename'];
$content = '';
if (file_exists($filepath)) {
$secondsToCache = 31536000;
$expires = gmdate('D, d M Y H:i:s', time() + $secondsToCache) . ' GMT';
if ($extension === 'js') {
header('Content-Type: application/javascript');
} elseif ($extension === 'css') {
header('Content-Type: text/css');
} else {
//currently just css and js should be supported!
exit();
}
header("Expires: $expires");
header('Pragma: cache');
header('Cache-Control: max-age=' . $secondsToCache);
$content = file_get_contents($filepath);
}
echo $content;