diff --git a/lib/server/object.js b/lib/server/object.js index cd948d61..9ea3e486 100644 --- a/lib/server/object.js +++ b/lib/server/object.js @@ -215,6 +215,26 @@ exports.Minify = { } }), + optimize: function(pParams){ + if(this._allowed.css || + this._allowed.js || + this._allowed.html){ + var lMinify; + try{ + lMinify = require('minify'); + }catch(pError){ + this._allowed = {js:false,css:false,html:false}; + return console.log('Could not minify ' + + 'without minify module\n' + + 'npm i minify'); + } + + lMinify.optimize(pParams); + } + } + + + /* minification folder name */ MinFolder : '', Cache : {} diff --git a/server.js b/server.js index c3dc8466..e5c56726 100644 --- a/server.js +++ b/server.js @@ -241,10 +241,12 @@ CloudServer.generateHeaders = function(pName, pGzip){ else lType='text/plain'; var lQuery = CloudServer.Queries[pName]; - if(lQuery) + if(lQuery){ if(lQuery === 'download') lType = 'application/octet-stream'; - console.log(pName + lQuery); + + console.log(pName + lQuery); + } return { /* if type of file any, but img - @@ -363,7 +365,7 @@ CloudServer._controller=function(pReq, pRes) lFileData = CloudServer.Minify.Cache[ Path.basename(lName)]; } - var lReadFileFunc_f=CloudServer.getReadFileFunc(lName); + var lReadFileFunc_f = CloudServer.getReadFileFunc(lName); /* если там что-то есть передаём данные в функцию * readFile */ @@ -381,9 +383,20 @@ CloudServer._controller=function(pReq, pRes) * если gzip включен - сжатые * в обратном случае - несжатые */ - lReadFileFunc_f(undefined,lFileData,lFromCache_o); + lReadFileFunc_f(undefined, lFileData, lFromCache_o); } - else Fs.readFile(lName,lReadFileFunc_f); + /* if file not in one of caches + * and minimizing setted then minimize it + */ + else if(CloudServer.Minify) + CloudServer.Minify.optimize(lName, { + cache: true, + callback: function(pFileData){ + lReadFileFunc_f(undefined, pFileData, false); + } + }); + + else Fs.readFile(lName, lReadFileFunc_f); }else{/* если мы имеем дело с файловой системой*/ /* если путь не начинаеться с no-js - значит @@ -718,9 +731,9 @@ CloudServer.getReadFileFunc = function(pName){ * которая до этого будет пустая * по скольку мы будем вызывать этот метод * сами, ведь файл уже вычитан - */ - + */ var lHeader = CloudServer.generateHeaders(pName, CloudServer.Gzip); + /* если браузер поддерживает gzip-сжатие - сжимаем данные*/ if( CloudServer.Gzip && !(pFromCache_o && pFromCache_o.cache) ){ /* сжимаем содержимое */ @@ -753,7 +766,7 @@ CloudServer.getReadFileFunc = function(pName){ /* Функция получает сжатые данные * @pHeader - заголовок файла */ -CloudServer.getGzipDataFunc=function(pHeader,pName){ +CloudServer.getGzipDataFunc = function(pHeader,pName){ return function(error,pResult){ if(!error){ /* отправляем сжатые данные