mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 02:35:49 +00:00
removed ability to cache files in memory
This commit is contained in:
parent
7ca72302c0
commit
331b280a5b
7 changed files with 96 additions and 156 deletions
14
cloudcmd.js
14
cloudcmd.js
|
|
@ -23,6 +23,7 @@
|
|||
* Win32 should be backslashes */
|
||||
DIR = main.DIR;
|
||||
|
||||
console.log(main);
|
||||
readConfig();
|
||||
Server.start(Config, {
|
||||
appcache : appCacheProcessing,
|
||||
|
|
@ -49,7 +50,7 @@
|
|||
* минифицированый
|
||||
*/
|
||||
if(Minify._allowed.css){
|
||||
var lPath = '/' + srv.Minify.MinFolder.replace(DIR, '');
|
||||
var lPath = '/' + Minify.MinFolder.replace(DIR, '');
|
||||
lReplace_s = '<link rel=stylesheet href="/css/reset.css">';
|
||||
lData = Util.removeStr(lData, lReplace_s)
|
||||
.replace('/css/style.css', lPath + 'all.min.css');
|
||||
|
|
@ -99,7 +100,6 @@
|
|||
lResetCSS = DIR + 'css/reset.css',
|
||||
lIndex = DIR + 'html/index.html',
|
||||
|
||||
lMinify = Server.CloudServer.Minify,
|
||||
lCSSOptions = {
|
||||
img : pAllowed.img,
|
||||
merge : true
|
||||
|
|
@ -109,8 +109,8 @@
|
|||
lOptimizeParams.push(LIBDIR + 'client.js');
|
||||
|
||||
if (pAllowed.html)
|
||||
//lOptimizeParams.push(lIndex);
|
||||
lOptimizeParams = lIndex;
|
||||
lOptimizeParams.push(lIndex);
|
||||
//lOptimizeParams = lIndex;
|
||||
|
||||
if (pAllowed.css) {
|
||||
var lStyles = [{}, {}];
|
||||
|
|
@ -121,8 +121,10 @@
|
|||
lOptimizeParams.push(lStyles[1]);
|
||||
}
|
||||
|
||||
//if (lOptimizeParams.length)
|
||||
//lMinify.optimize(lOptimizeParams);
|
||||
if (lOptimizeParams.length)
|
||||
Minify.optimize(lOptimizeParams, {
|
||||
force:true
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
"api_url" : "/api/v1",
|
||||
"appcache" : false,
|
||||
"cache" : false,
|
||||
"minification" : {
|
||||
"js" : true,
|
||||
"css" : false,
|
||||
"html" : false,
|
||||
"img" : false
|
||||
"css" : true,
|
||||
"html" : true,
|
||||
"img" : true
|
||||
},
|
||||
"logs" : false,
|
||||
"show_keys_panel" : true,
|
||||
|
|
|
|||
150
lib/server.js
150
lib/server.js
|
|
@ -75,15 +75,12 @@
|
|||
DIR = main.Dir,
|
||||
LIBDIR = main.LIBDIR,
|
||||
SRVDIR = main.SRVDIR,
|
||||
|
||||
|
||||
/* модуль для работы с путями*/
|
||||
Path = main.path,
|
||||
Fs = main.fs, /* модуль для работы с файловой системой*/
|
||||
Querystring = main.querystring,
|
||||
|
||||
/* Обьект для работы с кэшем */
|
||||
Cache = main.cache,
|
||||
|
||||
Minify = main.minify,
|
||||
AppCache = main.appcache,
|
||||
Socket = main.socket,
|
||||
|
|
@ -103,9 +100,6 @@
|
|||
var lConfig = this.Config,
|
||||
lMinifyAllowed = lConfig.minification;
|
||||
|
||||
/* Переменная в которой храниться кэш*/
|
||||
Cache.setAllowed(lConfig.cache);
|
||||
|
||||
/* Change default parameters of
|
||||
* js/css/html minification
|
||||
*/
|
||||
|
|
@ -260,72 +254,28 @@
|
|||
!Util.isContainStr(lPath, lNoJS_s) &&
|
||||
!Util.strCmp(lPath, '/') &&
|
||||
!Util.strCmp(lQuery, 'json') ) {
|
||||
|
||||
/* если имена файлов проекта - загружаем их *
|
||||
* убираем слеш и читаем файл с текущец директории */
|
||||
|
||||
/* добавляем текующий каталог к пути */
|
||||
var lName = '.' + lPath;
|
||||
Util.log('reading ' + lName);
|
||||
|
||||
/* watching is file changed */
|
||||
if(lConfig.appcache)
|
||||
CloudServer.AppCache.watch(lName);
|
||||
|
||||
/* сохраняем указатель на response и имя */
|
||||
CloudServer.Responses[lName] = pRes;
|
||||
|
||||
/* saving status OK for current file */
|
||||
CloudServer.Statuses[lName] = OK;
|
||||
|
||||
/* Берём значение из кэша
|
||||
* сжатый файл - если gzip-поддерживаеться браузером
|
||||
* не сжатый - в обратном случае
|
||||
*/
|
||||
var lFileData = Cache.get(
|
||||
CloudServer.Gzip?(lName+'_gzip') : lName);
|
||||
|
||||
Util.log(Path.basename(lName));
|
||||
|
||||
/* object thet contains information
|
||||
* about the source of file data
|
||||
*/
|
||||
var lReadFileFunc_f = CloudServer.getReadFileFunc(lName),
|
||||
/* если там что-то есть передаём данные в функцию readFile */
|
||||
lResult = lFileData;
|
||||
|
||||
if(lResult){
|
||||
Util.log(lName + ' readed from cache');
|
||||
|
||||
/* передаём данные с кэша,
|
||||
* если gzip включен - сжатые
|
||||
* в обратном случае - несжатые
|
||||
*/
|
||||
lReadFileFunc_f(undefined, lFileData, {'cache': true});
|
||||
}
|
||||
/* if file not in one of caches
|
||||
* and minimizing setted then minimize it
|
||||
*/
|
||||
else if(lName.indexOf('min') < 0 && Minify){
|
||||
var lMin_o = lConfig.minification,
|
||||
|
||||
lCheck_f = function(pExt){
|
||||
return Util.checkExtension(lName,pExt);
|
||||
};
|
||||
|
||||
lResult = (lCheck_f('js') && lMin_o.js) ||
|
||||
(lCheck_f('css') && lMin_o.css) ||
|
||||
(lCheck_f('html') && lMin_o.html);
|
||||
|
||||
if(lResult)
|
||||
lResult = Minify.optimize(lName, {
|
||||
request : pReq,
|
||||
response : pRes,
|
||||
callback : function(pFileData){
|
||||
lReadFileFunc_f(undefined, pFileData, false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* если имена файлов проекта - загружаем их *
|
||||
* убираем слеш и читаем файл с текущец директории */
|
||||
|
||||
/* добавляем текующий каталог к пути */
|
||||
var lName = '.' + lPath;
|
||||
Util.log('reading ' + lName);
|
||||
|
||||
/* watching is file changed */
|
||||
if(lConfig.appcache)
|
||||
AppCache.watch(lName);
|
||||
|
||||
Util.log(Path.basename(lName));
|
||||
|
||||
var lExt = Util.getExtension(lName),
|
||||
lResult = lExt === '.js' || lExt === '.css' || lExt === '.html';
|
||||
|
||||
if(lResult)
|
||||
lResult = Minify.optimize(lName, {
|
||||
request : pReq,
|
||||
response : pRes
|
||||
});
|
||||
|
||||
if(!lResult)
|
||||
main.sendFile({
|
||||
|
|
@ -379,7 +329,6 @@
|
|||
DirPath = lPath;
|
||||
|
||||
CloudServer.Responses[DirPath] = pRes;
|
||||
|
||||
CloudServer.Statuses[DirPath] = OK;
|
||||
|
||||
/* saving query of current file */
|
||||
|
|
@ -542,20 +491,9 @@
|
|||
lList = '<ul id=left class=panel>' + lPanel + '</ul>' +
|
||||
'<ul id=right class=panel>' + lPanel + '</ul>';
|
||||
|
||||
/* пробуем достать данные из кэша
|
||||
* с жатием или без, взависимости
|
||||
* от настроек
|
||||
*/
|
||||
var lFileData = Cache.get(CloudServer.INDEX);
|
||||
/* если их нет там - вычитываем из файла*/
|
||||
if(!lFileData) {
|
||||
Fs.readFile(CloudServer.INDEX,
|
||||
CloudServer.indexReaded(lList));
|
||||
}else {
|
||||
var lReaded_f = CloudServer.indexReaded(lList);
|
||||
lReaded_f(false, lFileData);
|
||||
}
|
||||
}else{
|
||||
Fs.readFile(CloudServer.INDEX, CloudServer.indexReaded(lList));
|
||||
|
||||
}else{
|
||||
DirPath = DirPath.substr(DirPath, DirPath.lastIndexOf('/') );
|
||||
|
||||
var lQuyery = CloudServer.Queries[DirPath];
|
||||
|
|
@ -593,9 +531,6 @@
|
|||
var lSrv = CloudServer,
|
||||
lIndexName = lSrv.INDEX;
|
||||
|
||||
/* и сохраняем в кэш */
|
||||
Cache.set(lIndexName, pIndex);
|
||||
|
||||
pIndex = pIndex.toString();
|
||||
|
||||
|
||||
|
|
@ -638,34 +573,18 @@
|
|||
/*
|
||||
* @pError - ошибка
|
||||
* @pData - данные
|
||||
* @pFromCache_o - прочитано с файла,
|
||||
* или из одного из кешей
|
||||
* Пример {cache: false}
|
||||
*/
|
||||
var lReadFile = function(pError, pData, pFromCache_o){
|
||||
var lReadFile = function(pError, pData){
|
||||
var lSrv = CloudServer;
|
||||
if (!pError){
|
||||
Util.log('file ' + pName + ' readed');
|
||||
|
||||
/* берём из кэша данные файла
|
||||
* если их нет в кэше -
|
||||
* сохраняем
|
||||
*/
|
||||
if(pFromCache_o && !pFromCache_o.cache &&
|
||||
lSrv.Cache.isAllowed)
|
||||
lSrv.Cache.set(pName, pData);
|
||||
|
||||
/* если кэш есть
|
||||
* сохраняем его в переменную
|
||||
* которая до этого будет пустая
|
||||
* по скольку мы будем вызывать этот метод
|
||||
* сами, ведь файл уже вычитан
|
||||
*/
|
||||
var lQuery = lSrv.Queries[pName],
|
||||
lHeader = main.generateHeaders(pName, lSrv.Gzip, lQuery);
|
||||
|
||||
/* если браузер поддерживает gzip-сжатие - сжимаем данные*/
|
||||
if( lSrv.Gzip && !(pFromCache_o && pFromCache_o.cache) )
|
||||
if( lSrv.Gzip )
|
||||
/* сжимаем содержимое */
|
||||
Zlib.gzip(pData,lSrv.getGzipDataFunc(lHeader, pName));
|
||||
else
|
||||
|
|
@ -695,19 +614,8 @@
|
|||
*/
|
||||
CloudServer.getGzipDataFunc = function(pHeader, pName){
|
||||
return function(error, pResult){
|
||||
if(!error){
|
||||
/* отправляем сжатые данные
|
||||
* вместе с заголовком
|
||||
* если установлена работа с кэшем
|
||||
* сохраняем сжатые данные
|
||||
*/
|
||||
if(Cache.isAllowed){
|
||||
/* устанавливаем кєш */
|
||||
Util.log(pName+' gziped');
|
||||
Cache.set(pName+'_gzip', pResult);
|
||||
}
|
||||
if(!error)
|
||||
CloudServer.sendResponse(pHeader, pResult, pName);
|
||||
}
|
||||
else{
|
||||
Util.log(error);
|
||||
CloudServer.sendResponse(pHeader, error);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* https://github.com/prose/gatekeeper */
|
||||
(function(){
|
||||
"use strict";
|
||||
'use strict';
|
||||
|
||||
if(!global.cloudcmd)
|
||||
return console.log(
|
||||
|
|
|
|||
|
|
@ -93,13 +93,13 @@
|
|||
exports.rest = srvrequire('rest').api,
|
||||
exports.socket = srvrequire('socket'),
|
||||
exports.update = srvrequire('update'),
|
||||
exports.ischanged = srvrequire('ischanged');
|
||||
exports.minify = srvrequire('minify').Minify;
|
||||
/*
|
||||
* second initializing after all modules load, so global var is
|
||||
* totally filled of all information that should know all modules
|
||||
*/
|
||||
global.cloudcmd.main = exports;
|
||||
|
||||
/**
|
||||
* function do safe require of needed module
|
||||
* @param {Strin} pSrc
|
||||
|
|
|
|||
|
|
@ -1,14 +1,29 @@
|
|||
/* Обьект для сжатия скриптов и стилей по умолчанию - сжимаються */
|
||||
/* Обьект для сжатия скриптов и стилей */
|
||||
|
||||
(function(){
|
||||
"use strict";
|
||||
'use strict';
|
||||
|
||||
var main = global.cloudcmd.main,
|
||||
DIR = main.DIR,
|
||||
LIBDIR = main.LIBDIR,
|
||||
HTMLDIR = main.HTMLDIR,
|
||||
Util = main.util,
|
||||
Minify = main.require('minify');
|
||||
if(!global.cloudcmd)
|
||||
return console.log(
|
||||
'# minify.js' + '\n' +
|
||||
'# -----------' + '\n' +
|
||||
'# Module is part of Cloud Commander,' + '\n' +
|
||||
'# used for work with minification.' + '\n' +
|
||||
'# If you wont to see at work set minify' + '\n' +
|
||||
'# parameters in config.json or environment' + '\n' +
|
||||
'# and start cloudcmd.js' + '\n' +
|
||||
'# http://coderaiser.github.com/cloudcmd' + '\n');
|
||||
|
||||
var main = global.cloudcmd.main,
|
||||
DIR = main.DIR,
|
||||
LIBDIR = main.LIBDIR,
|
||||
HTMLDIR = main.HTMLDIR,
|
||||
Util = main.util,
|
||||
Minify = main.require('minify'),
|
||||
IsChanged = main.ischanged,
|
||||
|
||||
COULD_NOT_MINIFY = 'Could not minify without minify module\n' +
|
||||
'npm i minify';
|
||||
|
||||
exports.Minify = {
|
||||
/* pathes to directories */
|
||||
|
|
@ -41,29 +56,32 @@
|
|||
}),
|
||||
|
||||
optimize: function(pName, pParams){
|
||||
var lResult;
|
||||
var lRet;
|
||||
if(Minify){
|
||||
if(!pParams)
|
||||
pParams = {};
|
||||
|
||||
if(this.force)
|
||||
pParams.force = this.force;
|
||||
if( !Util.isObject(pName) ){
|
||||
pParams.name = Minify.getName(pName);
|
||||
pParams.calback = function(){
|
||||
main.sendFile(pParams);
|
||||
};
|
||||
}
|
||||
|
||||
lRet = this._allowed.css || this._allowed.js || this._allowed.html;
|
||||
|
||||
if(!this.MinFolder)
|
||||
this.MinFolder = Minify.MinFolder;
|
||||
|
||||
if(this._allowed.css || this._allowed.js || this._allowed.html){
|
||||
main.srvrequire("ischanged").isFileChanged(pName, false, function(pChanged){
|
||||
if(pParams.force)
|
||||
Minify.optimize(pName, pParams);
|
||||
else if(lRet)
|
||||
IsChanged.isFileChanged(pName, false, function(pChanged){
|
||||
if(pChanged)
|
||||
Minify.optimize(pName, pParams);
|
||||
else{
|
||||
pParams.name = Minify.getName(pName);
|
||||
else
|
||||
main.sendFile(pParams);
|
||||
}
|
||||
});
|
||||
|
||||
lResult = true;
|
||||
}
|
||||
}
|
||||
else{
|
||||
this._allowed = {
|
||||
|
|
@ -72,12 +90,10 @@
|
|||
html : false
|
||||
};
|
||||
|
||||
Util.log('Could not minify ' +
|
||||
'without minify module\n' +
|
||||
'npm i minify');
|
||||
Util.log(COULD_NOT_MINIFY);
|
||||
}
|
||||
|
||||
return lResult;
|
||||
return lRet;
|
||||
},
|
||||
|
||||
/* minification folder name */
|
||||
|
|
|
|||
15
lib/util.js
15
lib/util.js
|
|
@ -538,6 +538,21 @@ Util = exports || {};
|
|||
return lRet;
|
||||
};
|
||||
|
||||
/**
|
||||
* function gets file extension
|
||||
* @param pFileName
|
||||
* @return Ext
|
||||
*/
|
||||
Util.getExtension = function(pFileName){
|
||||
var lRet, lDot;
|
||||
|
||||
if( Util.isString(pFileName) )
|
||||
lDot = pFileName.lastIndexOf('.');
|
||||
lRet = pFileName.substr(lDot);
|
||||
|
||||
return lRet;
|
||||
};
|
||||
|
||||
/**
|
||||
* get values from Object Array name properties
|
||||
* or
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue