我不完全确定这个问题是否更适合像Serverfault这样的东西 - 但是,因为我是程序员,而不是系统管理员,我是从程序员的角度问的 .
目前,有大量可用于缓存静态Web内容的选项 . 整个行业都使用Varnish或Squid等产品 .
但是,我知道如何缓存静态内容需要使用除Web服务器和操作系统之外的某些第三方软件 .
动态内容(例如,昂贵的PHP脚本计算的结果或某些东西)当然可以从良好的缓存系统中受益 .
但是对于静态内容,我们通过在内存中缓存资源获得了什么?操作系统页面缓存不会像Varnish或Squid这样的专用缓存系统提供相同的好处吗?或者我错过了一些好处?
实际上,Varnish使用 mmap
将数据存储在虚拟内存中 - 并让操作系统处理页面交换 . 那么,这与将缓存资源保存到磁盘并使用 fread
打开它们有何不同?
1 回答
你是对的 . 对于静态资源,内存也可以用于页面缓存而不是使用Varnish .
链接缓存(varnish,pagecache)用于竞争相同资源(服务器内存)的相同内容是愚蠢的 .
如果您还有一些动态内容,您可以选择从操作原因中结合并提供缓存中的所有内容 . 例如,从单个软件堆栈收集访问日志和统计信息比两个更简单 . 这也适用于员工培训和安全补丁等 .