Last active
February 5, 2023 16:23
-
-
Save mitio/9688698 to your computer and use it in GitHub Desktop.
Revisions
-
mitio revised this gist
Mar 21, 2014 . 1 changed file with 51 additions and 51 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,64 +1,64 @@ var MemoryCache = function (options) { options = $.extend(true, { maxEntries: null }, options || {}); var self = this; var cache = {}; var entries = 0; var ageOf = function (entry) { return Math.round((new Date() - entry.setAt) / 1000); }; var deleteEntryByKey = function (key) { delete cache[key]; if (entries > 0) entries--; }; var deleteOldestEntry = function () { var keyOfOldestItem, dateOfOldestItem; for (var key in cache) { if (!dateOfOldestItem || dateOfOldestItem > cache[key].setAt) { dateOfOldestItem = cache[key].setAt; keyOfOldestItem = key; } } if (keyOfOldestItem) { deleteEntryByKey(keyOfOldestItem); } }; self.set = function (key, value, maxAge) { if (cache[key]) { cache[key].value = value; cache[key].setAt = new Date(); cache[key].maxAge = maxAge || cache[key].maxAge; } else { if (options.maxEntries && entries >= options.maxEntries) { deleteOldestEntry(); } cache[key] = { value: value, setAt: new Date(), maxAge: maxAge }; entries++; } }; self.get = function (key) { var entry = cache[key]; if (entry) { if (entry.maxAge && entry.maxAge <= ageOf(entry)) { deleteEntryByKey(key); } return entry.value; } }; }; -
mitio revised this gist
Mar 21, 2014 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -16,7 +16,7 @@ var MemoryCache = function (options) { if (entries > 0) entries--; }; var deleteOldestEntry = function () { var keyOfOldestItem, dateOfOldestItem; for (var key in cache) { if (!dateOfOldestItem || dateOfOldestItem > cache[key].setAt) { @@ -37,7 +37,7 @@ var MemoryCache = function (options) { cache[key].maxAge = maxAge || cache[key].maxAge; } else { if (options.maxEntries && entries >= options.maxEntries) { deleteOldestEntry(); } cache[key] = { -
mitio created this gist
Mar 21, 2014 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,64 @@ var MemoryCache = function (options) { options = $.extend(true, { maxEntries: null }, options || {}); var self = this; var cache = {}; var entries = 0; var ageOf = function (entry) { return Math.round((new Date() - entry.setAt) / 1000); }; var deleteEntryByKey = function (key) { delete cache[key]; if (entries > 0) entries--; }; var deleteOldestItem = function () { var keyOfOldestItem, dateOfOldestItem; for (var key in cache) { if (!dateOfOldestItem || dateOfOldestItem > cache[key].setAt) { dateOfOldestItem = cache[key].setAt; keyOfOldestItem = key; } } if (keyOfOldestItem) { deleteEntryByKey(keyOfOldestItem); } }; self.set = function (key, value, maxAge) { if (cache[key]) { cache[key].value = value; cache[key].setAt = new Date(); cache[key].maxAge = maxAge || cache[key].maxAge; } else { if (options.maxEntries && entries >= options.maxEntries) { deleteOldestItem(); } cache[key] = { value: value, setAt: new Date(), maxAge: maxAge }; entries++; } }; self.get = function (key) { var entry = cache[key]; if (entry) { if (entry.maxAge && entry.maxAge <= ageOf(entry)) { deleteEntryByKey(key); } return entry.value; } }; };