我正在将我的Rails应用程序中的图片直接上传到S3。当我加载一个显示图像的索引页面时,它直接从S3检索图像url。
我要做的是使用他们的“exists?”检查S3镜像是否存在。方法,如果该图像存在,则显示该图像,如果该图像不存在,则显示存储在我的资产管道中的默认图像。
我能够做到这一点,但是性能变得非常慢(10秒加载时间!)从我的日志来看,这是由于所有404 KeyNotFound错误导致的,这些错误返回的图像不存在。当我在不这样做的情况下检索所有的图像时存在吗?检查一下,页面加载速度要快得多(不到1秒--我的网页上没有的图片只是空白)。
我怎么才能避免这个问题呢?我想在缺少图像的情况下显示默认图像。
发布于 2015-03-17 11:04:08
将图像存储在S3上,但将包含图像的视图片段缓存保存在服务器上。
尝试显示图像的第一个页面访问将产生成本,但此后,缓存命中将减少其他尝试显示该图像的响应时间。
使用一些相对简单的片段缓存管理逻辑,这可以很好地缓存需要“太多时间”组装的视图片段。
缓存其视图的模型负责使包含其数据的缓存过期-当模型实例的缓存数据发生更改时,它只删除显示该数据的缓存数据片段--不一定是显示其数据的所有缓存视图,而是那些受影响的视图。
我对索引视图、显示视图以及当一个模型的数据出现在另一个模型的“相关项视图”中时使用了不同的片段缓存。
https://stackoverflow.com/questions/29090111
复制相似问题