我在 linux 中有一个很好的缓存系统,它使用 ramdisk 来缓存图像文件和我网站各个页面的 HTML 输出。
我的网站相当大,缓存所有内容所需的 ramdisk 空间超过 15GB(不包括图像输出),我只有 2GB 可用于缓存。
写入和读取缓存相对较快,但问题是试图弄清楚当我用完空间以便为新文件腾出空间时如何快速找到最陈旧的文件。我相信使用“ls -R”并扫描大输出是一个缓慢的过程。
我唯一对我来说效率低下的另一个选择是频繁刷新整个缓存,以便永远不会用完 ramdisk 空间。
我的缓存允许我的网站以低于 200 毫秒的第一个字节 (TTFB) 时间加载许多页面,这是谷歌喜欢的,所以我想在从缓存加载文件时尝试将 200 毫秒作为最大 TTFB 值,即使由于缺乏 ramdisk 空间,文件被删除。
我曾想过通过缓存指针使用直接访问内存,但由于缓存的输出大小不同,我觉得该选项最多会浪费内存空间或使用大量 cpu 来查找下一个空闲内存位置。
任何人都知道如何快速查找然后从缓存中删除最旧的文件?