在 ramdisk 上缓存 - 查找要删除的最旧文件

caching on ramdisk - finding stalest file to delete

我在 linux 中有一个很好的缓存系统,它使用 ramdisk 来缓存图像文件和我网站各个页面的 HTML 输出。

我的网站相当大,缓存所有内容所需的 ramdisk space 超过 15GB(不包括图像输出),而我只有 2GB 可用于缓存。

写入和读取缓存相对较快,但问题是试图弄清楚如何快速找到最陈旧的文件,当我运行 从 space 中删除,以便为新文件腾出空间。我相信使用 "ls -R" 并扫描大输出是一个缓慢的过程。

我唯一一个对我来说效率低下的选择是经常刷新整个缓存,以便永远不会 运行 离开 ramdisk space。

我的缓存允许我的网站加载许多页面,第一个字节的时间 (TTFB) 不到 200 毫秒,这是 google 喜欢的,所以我想尽量保持 200 毫秒作为最大 TTFB 值从缓存中加载文件时,即使文件因缺少 ramdisk 而被删除 space.

我想通过缓存指针直接访问内存,但由于缓存的输出大小不一,我觉得该选项最多会浪费内存 space 或使用大量 cpu 找到下一个空闲内存位置。

有人知道我如何快速查找并从我的缓存中删除最旧的文件吗?

ls -latr 在使用 ramdisk 时不应该很慢。但这可能更接近您要查找的内容:

find -type f -printf '%T+ %p\n' | sort | head -1