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;
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
}
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) {
#endif /* FOLLOW_X_FORWARDED_FOR */
int WIN32_IpAddrChangeMonitor;
+ int memory_cache_first;
+ int memory_cache_disk;
} onoff;
int forward_max_tries;