/*****************************************
* Cache Manager
*****************************************
* Author: mikael.lofjard@gmail.com
* Website: http://lofjard.se
* License: MIT License
****************************************/
var
CacheManager = (
function
() {
env = require(
'./environmentManager'
).EnvironmentManager;
searchManager = require(
'./searchManager'
).SearchManager;
misc = require(
'./misc'
).Misc;
cacheStore = {};
getStoreType(url)
{
urlParts = url.split(
'/'
);
result =
'dynamic'
;
switch
(urlParts[1]) {
case
'search'
:
'none'
break
'source'
'about'
'static'
'archive'
'atomfeed'
/* result = 'semiStatic';
break;*/
'tags'
'tag'
'semiDynamic'
'post'
'floating'
}
return
result;
init:
cacheStore.static = {};
// static between boots - /source /about
cacheStore.semiStatic = {};
// clear on new post - /archive /atomfeed
cacheStore.semiDynamic = {};
// clear on edit post - /tags /tag
cacheStore.dynamic = {};
// clear on comment (default) - / /page
cacheStore.floating = {};
// null item on comment - /post
},
clearOnNewPost:
env.info(
'CacheManager: Clearing cache on new post'
searchManager.rescan();
clearOnEditPost:
(url) {
'CacheManager: Clearing cache on edit for '
+ url);
delete
(cacheStore[getStoreType(url)][url]);
clearOnNewComment:
'CacheManager: Clearing cache on comment for '
cache:
(url, headerData, contentData) {
storeType = getStoreType(url);
if
(storeType !=
) {
'CacheManager: Caching content for '
cacheStore[storeType][url] = { content: contentData, headers: headerData };
fetch:
data = cacheStore[getStoreType(url)][url];
(
typeof
(data) !=
'undefined'
'CacheManager: Found cached entry for '
data;
null
};
}());
(exports) !=
? exports.CacheManager = CacheManager :
/*****************************************
* Cache Manager
*****************************************
* Author: mikael.lofjard@gmail.com
* Website: http://lofjard.se
* License: MIT License
****************************************/
var
CacheManager = (
function
() {
var
env = require(
'./environmentManager'
).EnvironmentManager;
var
searchManager = require(
'./searchManager'
).SearchManager;
var
misc = require(
'./misc'
).Misc;
var
cacheStore = {};
function
getStoreType(url)
{
var
urlParts = url.split(
'/'
);
var
result =
'dynamic'
;
switch
(urlParts[1]) {
case
'search'
:
result =
'none'
;
break
;
case
'source'
:
case
'about'
:
result =
'static'
;
break
;
case
'archive'
:
case
'atomfeed'
:
/* result = 'semiStatic';
break;*/
case
'tags'
:
case
'tag'
:
result =
'semiDynamic'
;
break
;
case
'post'
:
result =
'floating'
;
break
;
}
return
result;
}
return
{
init:
function
() {
cacheStore = {};
cacheStore.static = {};
// static between boots - /source /about
cacheStore.semiStatic = {};
// clear on new post - /archive /atomfeed
cacheStore.semiDynamic = {};
// clear on edit post - /tags /tag
cacheStore.dynamic = {};
// clear on comment (default) - / /page
cacheStore.floating = {};
// null item on comment - /post
},
clearOnNewPost:
function
() {
env.info(
'CacheManager: Clearing cache on new post'
);
cacheStore.semiStatic = {};
cacheStore.semiDynamic = {};
cacheStore.dynamic = {};
searchManager.rescan();
},
clearOnEditPost:
function
(url) {
env.info(
'CacheManager: Clearing cache on edit for '
+ url);
cacheStore.semiDynamic = {};
cacheStore.dynamic = {};
delete
(cacheStore[getStoreType(url)][url]);
searchManager.rescan();
},
clearOnNewComment:
function
(url) {
env.info(
'CacheManager: Clearing cache on comment for '
+ url);
cacheStore.dynamic = {};
delete
(cacheStore[getStoreType(url)][url]);
},
cache:
function
(url, headerData, contentData) {
var
storeType = getStoreType(url);
if
(storeType !=
'none'
) {
env.info(
'CacheManager: Caching content for '
+ url);
cacheStore[storeType][url] = { content: contentData, headers: headerData };
}
},
fetch:
function
(url) {
var
storeType = getStoreType(url);
if
(storeType !=
'none'
) {
var
data = cacheStore[getStoreType(url)][url];
if
(
typeof
(data) !=
'undefined'
) {
env.info(
'CacheManager: Found cached entry for '
+ url);
return
data;
}
}
return
null
;
}
};
}());
typeof
(exports) !=
'undefined'
? exports.CacheManager = CacheManager :
null
;