diff options
author | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-17 22:50:14 +0000 |
---|---|---|
committer | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-17 22:50:14 +0000 |
commit | 03c5e868627fd74ec5c13cb26df3cb110853765f (patch) | |
tree | c97563d5255b2ae0de3faf921577130bb346008f /chrome/browser/net/dns_master.h | |
parent | b7125fd56addf151194b09314c1f7f2c9d03a5b9 (diff) | |
download | chromium_src-03c5e868627fd74ec5c13cb26df3cb110853765f.zip chromium_src-03c5e868627fd74ec5c13cb26df3cb110853765f.tar.gz chromium_src-03c5e868627fd74ec5c13cb26df3cb110853765f.tar.bz2 |
Persist info about subresources on pages for DNS pre-resolution
The DNS pre-resolution system already "learns" what domains are commonly
needed when rendering sub-resources of a page at a given domain.
This patch saves (some of) the information learned into a persistent
pref, and restores it on startup.
For now, I put in a wimpy pruning of the list each time I save, so that
the list will not grow endlessly from session to session. I probably need
a better pruning algorithm, such as one that prunes after a given amount
of time, rather than only during shutdown. For now, this should get
a lot of nice results, and provide slightly larger than needed lists to
users that have long lived sessions, which is similar to the current
performance, where I didn't persist any info, and only pruned (actually
discarded) all learned info at shutdown.
r=mbelshe
Review URL: http://codereview.chromium.org/21374
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9912 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/net/dns_master.h')
-rw-r--r-- | chrome/browser/net/dns_master.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/chrome/browser/net/dns_master.h b/chrome/browser/net/dns_master.h index f406b32..72116cd 100644 --- a/chrome/browser/net/dns_master.h +++ b/chrome/browser/net/dns_master.h @@ -23,6 +23,7 @@ #include "base/condition_variable.h" #include "base/scoped_ptr.h" +#include "base/values.h" #include "chrome/browser/net/dns_host_info.h" #include "chrome/browser/net/referrer.h" #include "chrome/common/net/dns.h" @@ -118,6 +119,22 @@ class DnsMaster { return running_slave_count_; } + // Discard any referrer for which all the suggested host names are currently + // annotated with no user latency reduction. Also scale down (diminish) the + // total benefit of those that did help, so that their reported contribution + // wll go done by a factor of 2 each time we trim (moving the referrer closer + // to being discarded at a future Trim). + void TrimReferrers(); + + // Construct a ListValue object that contains all the data in the referrers_ + // so that it can be persisted in a pref. + void SerializeReferrers(ListValue* referral_list); + + // Process a ListValue that contains all the data from a previous reference + // list, as constructed by SerializeReferrers(), and add all the identified + // values into the current referrer list. + void DeserializeReferrers(const ListValue& referral_list); + //---------------------------------------------------------------------------- // Methods below this line should only be called by slave processes. @@ -184,7 +201,7 @@ class DnsMaster { HANDLE thread_handles_[kSlaveCountMax]; DnsSlave* slaves_[kSlaveCountMax]; #endif - + // shutdown_ is set to tell the slaves to terminate. bool shutdown_; |