我正在寻找缓存数千个网页的最佳解决方案。现在我正在使用平面文件,在有数千个平面文件之前效果很好,然后整个文件系统在访问文件缓存时(很多)变慢(很多)(在 OpenVZ 下的 CentOS 上使用 EXT3 运行)。我想探索其他选项,如Redis或MongoDB作为替代品,但它们会更快吗?如果没有,最好的建议是什么?
我的系统为每个网站动态创建超过 40K 的页面,因此进行内存缓存也不可行。
谢谢!!
文件缓存很好,你只需要聪明一点。我的目标是将目录保持在 500 个条目或更少。对于 40k 个条目,只需对 URL 进行哈希处理并使用哈希的前 2 个字节即可为您提供 255 个文件夹,每个文件夹平均应包含 ~150 个文件。
我知道 StackExchange 在 CentOS 上使用 Redis,所以从 LAMP 堆栈来看应该更好。Redis似乎针对这类事情进行了优化,而MongoDB更像是一个实际的数据库。你也可以使用memcached。
我建议将文件分散在子目录中,可能按缓存文件名的 md5 哈希的前两三个字符(或只是文件名的前两五个字符)分组。这减轻了文件系统的一点负载。
您是否考虑过使用清漆之类的东西? 根据您要缓存的内容以及失效的复杂程度,它可能对您有用。 您将动态创建页面,并让代理层处理任何重复的请求。
https://www.varnish-cache.org/