mirror of
https://github.com/gorhill/uMatrix.git
synced 2024-06-29 03:21:09 +12:00
code review: this fix broken pruning code for domainCache
This commit is contained in:
parent
9cfc2ff6f8
commit
87e85fa0da
|
@ -289,8 +289,8 @@ URI.hostnameFromURI = function(uri) {
|
|||
|
||||
URI.domainFromHostname = function(hostname) {
|
||||
// Try to skip looking up the PSL database
|
||||
if ( domainCache.hasOwnProperty(hostname) ) {
|
||||
var entry = domainCache[hostname];
|
||||
if ( entry !== undefined ) {
|
||||
entry.tstamp = Date.now();
|
||||
return entry.domain;
|
||||
}
|
||||
|
@ -316,6 +316,13 @@ var psl = publicSuffixList;
|
|||
// specific set of hostnames within a narrow time span -- in other words, I
|
||||
// believe probability of cache hit are high in uBlock.
|
||||
|
||||
var domainCache = Object.create(null);
|
||||
var domainCacheCount = 0;
|
||||
var domainCacheCountLowWaterMark = 75;
|
||||
var domainCacheCountHighWaterMark = 100;
|
||||
var domainCacheEntryJunkyard = [];
|
||||
var domainCacheEntryJunkyardMax = domainCacheCountHighWaterMark - domainCacheCountLowWaterMark;
|
||||
|
||||
var DomainCacheEntry = function(domain) {
|
||||
this.init(domain);
|
||||
};
|
||||
|
@ -328,7 +335,7 @@ DomainCacheEntry.prototype.init = function(domain) {
|
|||
|
||||
DomainCacheEntry.prototype.dispose = function() {
|
||||
this.domain = '';
|
||||
if ( domainCacheEntryJunkyard.length < 25 ) {
|
||||
if ( domainCacheEntryJunkyard.length < domainCacheEntryJunkyardMax ) {
|
||||
domainCacheEntryJunkyard.push(this);
|
||||
}
|
||||
};
|
||||
|
@ -341,11 +348,10 @@ var domainCacheEntryFactory = function(domain) {
|
|||
return new DomainCacheEntry(domain);
|
||||
};
|
||||
|
||||
var domainCacheEntryJunkyard = [];
|
||||
|
||||
var domainCacheAdd = function(hostname, domain) {
|
||||
if ( domainCache.hasOwnProperty(hostname) ) {
|
||||
domainCache[hostname].tstamp = Date.now();
|
||||
var entry = domainCache[hostname];
|
||||
if ( entry !== undefined ) {
|
||||
entry.tstamp = Date.now();
|
||||
} else {
|
||||
domainCache[hostname] = domainCacheEntryFactory(domain);
|
||||
domainCacheCount += 1;
|
||||
|
@ -357,7 +363,7 @@ var domainCacheAdd = function(hostname, domain) {
|
|||
};
|
||||
|
||||
var domainCacheEntrySort = function(a, b) {
|
||||
return b.tstamp - a.tstamp;
|
||||
return domainCache[b].tstamp - domainCache[a].tstamp;
|
||||
};
|
||||
|
||||
var domainCachePrune = function() {
|
||||
|
@ -375,15 +381,10 @@ var domainCachePrune = function() {
|
|||
};
|
||||
|
||||
var domainCacheReset = function() {
|
||||
domainCache = {};
|
||||
domainCache = Object.create(null);
|
||||
domainCacheCount = 0;
|
||||
};
|
||||
|
||||
var domainCache = {};
|
||||
var domainCacheCount = 0;
|
||||
var domainCacheCountLowWaterMark = 75;
|
||||
var domainCacheCountHighWaterMark = 100;
|
||||
|
||||
psl.onChanged.addListener(domainCacheReset);
|
||||
|
||||
/******************************************************************************/
|
||||
|
|
Loading…
Reference in a new issue