2

我正在寻找缓存数千个网页的最佳解决方案。现在我正在使用平面文件,在有数千个平面文件之前效果很好,然后在访问文件缓存时整个文件系统会变慢(很多)(在 OpenVZ 下使用 EXT3 在 CentOS 上运行)。我想探索其他选项,例如 Redis 或 MongoDB,但它们会更快吗?如果没有,最好的建议是什么?

我的系统会为每个网站动态创建超过 40K 的页面,因此做内存缓存也不可行。

谢谢!!

4

4 回答 4

3

文件缓存很好,你只需要聪明一点。我的目标是将目录保持在 500 个或更少的条目。有 40k 个条目,只需对 url 进行哈希处理并使用哈希的前 2 个字节,就可以得到 255 个文件夹,每个文件夹平均应包含约 150 个文件。

于 2012-06-28T17:56:39.047 回答
0

好吧,我知道 StackExchange 在 CentOS 上使用 Redis,所以从 LAMP 堆栈中它应该会更好。Redis 似乎针对这类事情进行了优化,而 MongoDB 更像是一个实际的数据库。您也可以使用 memcached。

于 2012-06-28T17:52:01.047 回答
0

我建议将文件分散在子目录中,可能按缓存文件名称的 md5 散列的前两个或三个字符(或文件名的前两个或五个字符)分组。这减轻了文件系统的负担。

于 2012-06-28T17:54:27.940 回答
0

您是否考虑过使用 Varnish 之类的东西?根据您缓存的内容以及失效的复杂程度,它可能对您有用。您将动态创建页面并让代理层处理任何重复的请求。

https://www.varnish-cache.org/

于 2012-06-30T00:45:19.663 回答