Perl,哪个是为 Web 应用程序缓存数据的最佳模块?

标签 perl caching

我需要一些方法来在用 Perl 编写的 Web 服务中缓存从 Internet 获取(或预获取)的数据。 收集的数据被解析为 XML 格式。 我的目标是缩短我的服务对用户请求的响应时间。

我看到有很多模块可用:就可用性和效率而言(按重要性顺序),哪个模块表现最好?

更新:

我正在评估 CHI、Cache 和 Cache::Cache(我认为它们已经过时了...)

我在 mod_perl2 Linux 环境中:在这种情况下,内存缓存是否有意义?

最佳答案

CHI是一个很好的基础,可以做你可能需要的大部分缓存,根据你的需要选择后端。我们以前用Cache::Cache ,有时甚至是 Memoize,但 CHI 最终表现最好,并且肯定取代了 Cache::Cache

现在是缓存后端系统。这在很大程度上取决于您的网络设置,甚至取决于您的操作系统和硬件。如果你有很多内存,和/或正在运行少量的服务器进程,基于内存的缓存是可靠和简单的。如果您正在运行许多进程并且仍然有足够的内存,您可能需要一个共享内存缓存(这在 Linux 和 UNIX 系统上运行良好,但在 Windows 上可能不受支持)。如果您的内存较少,基于文件的缓存也可以工作,但速度会更慢。

但是,如果您只是预取,您也可以使用数据库。即使缓存主要用于避免网络请求,SQL 数据库仍将提供您所需的性能改进。还有一个 CHI 驱动程序,位于:CHI::Driver::DBI .不管怎样,大多数数据库都做了非常不错的缓存。

更新:

CacheCache::Cache 都很古老。 CHI 旨在取代 Cache::Cache。其中,CHI 绝对是最好的。

是的,即使在 mod_perl 中,内存缓存也很有用,但您不能承受它变得太大。 mod_perl 将 Perl 嵌入到服务器进程中,因此每个服务器进程都有自己的缓存。这会降低效率,但是如果您要缓存的东西很少,而且经常使用,那么它仍然值得使用。

假设您使用的是 UNIX 类型的系统,共享内存缓存或数据库缓存可能是您的最佳选择,具体取决于您可能需要缓存的内容数量及其大小。如果您的缓存将变得巨大,并且网络延迟是问题的主要部分,那么数据库缓存后端就可以了。如果缓存总是相对较小,内存或共享内存应该适合。

关于Perl,哪个是为 Web 应用程序缓存数据的最佳模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6871175/

相关文章:

python - Python 与 Perl 中的小写脚本

caching - GSCRIPT - 如何缓存 HTML 页面内容?

c# - 持久 Entity Framework 查询缓存

python - 如何抓取多个网站的缩略图截图?

perl - 按修改日期对任何随机文件列表进行排序

string - Perl程序从十六进制值打印Unicode

string - DateTime 对象和 YYYY-MM-DD 字符串之间的 MongoDB 区别

linux - 控制台/shell 缓存/恢复如何工作?

javascript - Workbox - 将 header 添加到缓存的响应

caching - 缓存 DataContractSerializer 实例是个好主意吗?