我在 AWS S3 上有两个 Web 服务器和许多图像。我从 S3 加载这些图像作为内存流并将该流转换为位图。然后我从该位图创建一个 MagickImage 对象,然后在其上应用我的 MagickImage 命令。
这些图像是应用程序在一天中多次使用它们的模板,可能在一小时内使用 60 次或更多,甚至数十次。将位图转换为,甚至直接将流/内存流转换为 MagickImage 是一个繁重的过程,需要 cpu 时间。
现在我已将位图放入缓存并删除对 S3 的调用;我从缓存中获取内存流并将其转换为位图。这有很大帮助,但还不够,我的系统仍然受到性能的影响。
现在的问题是:当我创建 MagickImage 对象时,我该如何保留它?我必须找到一种方法来删除将 Bitmap 转换为 MagickImage。
我知道(也许我错了)我有两种方法可以保留它:1)将 MagickImage 对象放入缓存中,这不是一个好主意,因为我使用的是进程外缓存(因为我们有两个 Web 服务器)我必须将 MagickImage 对象转换为 memoryStream,然后当我想从缓存中加载它时,我必须再次将其转换回 MagickImage,这太慢了。2) 我可以将 MagickImage 保存为“.mpc”文件,但如果 MagickImage 对象是在同一台机器上创建的,这些文件才有效。对于两个 Web 服务器,这是无效的。