Index: net/disk_cache/backend_impl.cc |
=================================================================== |
--- net/disk_cache/backend_impl.cc (revision 97896) |
+++ net/disk_cache/backend_impl.cc (working copy) |
@@ -47,6 +47,9 @@ |
const int kBaseTableLen = 64 * 1024; |
const int kDefaultCacheSize = 80 * 1024 * 1024; |
+// Avoid trimming the cache for the first 5 minutes (10 timer ticks). |
+const int kTrimDelay = 10; |
+ |
int DesiredIndexTableLen(int32 storage_size) { |
if (storage_size <= k64kEntriesStore) |
return kBaseTableLen; |
@@ -366,7 +369,7 @@ |
block_files_(path), |
mask_(0), |
max_size_(0), |
- io_delay_(0), |
+ up_ticks_(0), |
cache_type_(net::DISK_CACHE), |
uma_report_(0), |
user_flags_(0), |
@@ -392,7 +395,7 @@ |
block_files_(path), |
mask_(mask), |
max_size_(0), |
- io_delay_(0), |
+ up_ticks_(0), |
cache_type_(net::DISK_CACHE), |
uma_report_(0), |
user_flags_(kMask), |
@@ -975,7 +978,8 @@ |
void BackendImpl::OnEntryDestroyEnd() { |
DecreaseNumRefs(); |
- if (data_->header.num_bytes > max_size_ && !read_only_) |
+ if (data_->header.num_bytes > max_size_ && !read_only_ && |
+ (up_ticks_ > kTrimDelay || user_flags_ & disk_cache::kNoRandom)) |
eviction_.TrimCache(false); |
} |
@@ -1190,6 +1194,7 @@ |
CACHE_UMA(COUNTS, "ByteIORate", 0, byte_count_ / 1024); |
entry_count_ = 0; |
byte_count_ = 0; |
+ up_ticks_++; |
if (!data_) |
first_timer_ = false; |