From: Henrik Nordstrom Date: Wed, 29 Jul 2009 08:44:07 +0000 (+0200) Subject: Added squid.conf directives for tuning when objects gets cached into memory X-Git-Tag: SQUID_3_2_0_1~795^2~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ff4b33f4a6e47666a22aa256a797f9d43db59bde;p=thirdparty%2Fsquid.git Added squid.conf directives for tuning when objects gets cached into memory --- diff --git a/src/MemObject.cc b/src/MemObject.cc index 97493dd089..0c588056c2 100644 --- a/src/MemObject.cc +++ b/src/MemObject.cc @@ -322,7 +322,8 @@ MemObject::policyLowestOffsetToKeep() const int64_t lowest_offset = lowestMemReaderOffset(); if (endOffset() < lowest_offset || - endOffset() - inmem_lo > (int64_t)Config.Store.maxInMemObjSize) + endOffset() - inmem_lo > (int64_t)Config.Store.maxInMemObjSize || + !Config.onoff.memory_cache_first) return lowest_offset; return inmem_lo; diff --git a/src/cf.data.pre b/src/cf.data.pre index 62c9cc0d00..593f5cf852 100644 --- a/src/cf.data.pre +++ b/src/cf.data.pre @@ -2084,6 +2084,26 @@ DOC_START enough to keep larger objects from hoarding cache_mem. DOC_END +NAME: memory_cache_first +TYPE: onoff +LOC: Config.onoff.memory_cache_first +DEFAULT: on +DOC_START + Squid normally caches objects retreived from network into memory. + By setting this to off objects gets released from memory when + written to disk. +DOC_END + +NAME: memory_cache_disk +TYPE: onoff +LOC: Config.onoff.memory_cache_disk +DEFAULT: on +DOC_START + Squid normally keeps a copy of cache hit objects in memory as well + as on disk. By setting this to off cache hits to objects stored on + disk will not be read back into the memory cache. +DOC_END + NAME: memory_replacement_policy TYPE: removalpolicy LOC: Config.memPolicy diff --git a/src/store_client.cc b/src/store_client.cc index b98c8ff21c..61d18f8f5a 100644 --- a/src/store_client.cc +++ b/src/store_client.cc @@ -499,7 +499,7 @@ store_client::readBody(const char *buf, ssize_t len) } const HttpReply *rep = entry->getReply(); - if (len > 0 && rep && entry->mem_obj->inmem_lo == 0 && entry->objectLen() <= (int64_t)Config.Store.maxInMemObjSize) { + if (len > 0 && rep && entry->mem_obj->inmem_lo == 0 && entry->objectLen() <= (int64_t)Config.Store.maxInMemObjSize && Config.onoff.memory_cache_disk) { storeGetMemSpace(len); // The above may start to free our object so we need to check again if (entry->mem_obj->inmem_lo == 0) { diff --git a/src/structs.h b/src/structs.h index 198f35eb82..fd9941d9ec 100644 --- a/src/structs.h +++ b/src/structs.h @@ -444,6 +444,8 @@ struct SquidConfig { #endif /* FOLLOW_X_FORWARDED_FOR */ int WIN32_IpAddrChangeMonitor; + int memory_cache_first; + int memory_cache_disk; } onoff; int forward_max_tries;