squid的cache是什么?
用了squid有一段时间了,一直以来对cache_mem的选项理解都有些错误,后来重新查看了配置文件,并对着词典翻译了一下,共享出来,欢迎批评指正:)
Option Name: cache_mem
Replaces:
Requires:
Default Value: cache_mem 8 MB
Suggested Config:
NOTE: THIS PARAMETER DOES NOT SPECIFY THE MAXIMUM PROCESS SIZE。
IT ONLY PLACES A LIMIT ON HOW MUCH ADDITIONAL MEMORY SQUID WILL
USE AS A MEMORY CACHE OF OBJECTS。 SQUID USES MEMORY FOR OTHER
THINGS AS WELL。
SEE THE SQUID FAQ SECTION 8 FOR DETAILS。
此参数并非指定进程的最大值,它只是设定一个squid能够用多少额外的内存来缓存对象的限制值,squid在其他方面也需要使用内存。更详细的内容请看squid的FAQ第8段。
'cache_mem' specifies the ideal amount of memory to be used
for:
* In-Transit objects
* Hot Objects
* Negative-Cached objects
‘cache_mem’设定理想的内存总量用于:
*传输中的对象(In-Transit OBJECTs)
*热对象(Hot OBJECTs)
*消极缓存对象(Negative-Cached OBJECTs)
Data for these objects are stored in 4 KB blocks。
This
parameter specifies the ideal upper limit on the total size of
4 KB blocks allocated。
In-Transit objects take the highest
priority。
这些对象所对应的数据都存储在4KB的块里面。此参数指定理想中分配4KB块总数的最大限制。In-Transit OBJECTs具有最高的优先级。
In-transit objects have priority over the others。
When
additional space is needed for incoming data, negative-cached
and hot objects will be released。
In other words, the
negative-cached and hot objects will fill up any unused space
not needed for in-transit objects。
In-transit OBJECTs拥有高于其他对象的优先级,当输入数据需要额外空间来存储的时候,negative-cached和hot OBJECTs将被释放。也就是说,消极缓存对象和热对象将会填满所有未使用的而且对传输中的对象来说不是必需的空间。
If circumstances require, this limit will be exceeded。
Specifically, if your incoming request rate requires more than
'cache_mem' of memory to hold in-transit objects, Squid will
exceed this limit to satisfy the new requests。
When the load
decreases, blocks will be freed until the high-water mark is
reached。
Thereafter, blocks will be used to store hot
objects。
如果现实需要,这个限制将被突破。特别是,如果输入请求速率需要多于‘cache_mem’指定内存值的内存来承载传输中的对象,squid将突破此限制来满足新的请求。当负载持续减少时,块将被释放直到达到最高分水线。此后,块将被用于保持热对象。