我在linux中有一个很好的缓存系统,它使用ramdisk来缓存图像文件和我网站各个页面的HTML输出。
我的网站相当大,缓存所有内容所需的ramdisk空间超过15GB(不包括图像输出),而我只有2GB可用于缓存。
写入和读取缓存相对较快,但问题是试图找出如何快速找到最陈旧的文件(s),当我用完空间,以便为新文件腾出空间。我相信使用"ls -R"并扫描大输出是一个缓慢的过程。
我唯一的另一个对我来说效率低下的选择是经常刷新整个缓存,以便永远不会耗尽ramdisk空间。
我的缓存允许我的网站加载许多页面的时间到第一个字节(TTFB)在200ms以下,这是谷歌喜欢的,所以我想尽量保持200ms作为最大TTFB值从缓存加载文件时,即使文件被删除由于缺乏ramdisk空间。
我想使用直接访问内存通过指针缓存,但因为输出到缓存的大小是不同的,我觉得这个选项会浪费内存空间,或者使用大量的cpu来寻找下一个空闲的内存位置。
有没有人知道我如何快速寻找,然后从我的缓存中删除最新的文件?
ls - later在使用ram磁盘时应该不会很慢。但这可能更接近你想要的:
find -type f -printf '%T+ %pn' | sort | head -1