removed ability to cache files in memory

This commit is contained in:
coderaiser 2013-01-30 09:38:20 -05:00
parent dd8481f2a4
commit 89112d465a
7 changed files with 96 additions and 156 deletions

View file

@ -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);

View file

@ -1,6 +1,6 @@
/* https://github.com/prose/gatekeeper */
(function(){
"use strict";
'use strict';
if(!global.cloudcmd)
return console.log(

View file

@ -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

View file

@ -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 */

View file

@ -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