Yii ClistView和S3用于图像

时间:2014-02-01 16:51:32

标签: php listview yii amazon-s3 yii-extensions

我使用Amazon S3存储图像,YII CListView用于列出每个页面项目。 在代表CListView的每个项目的局部视图内部,有2次调用Amazon S3 api,一次用于检查文件是否存在,第二次用于实际获取图像和显示。

由于页面大小为20,平均延迟为每张图像200毫秒,因此对于20张图像,总共20 * 200毫秒*(每项2个请求)= 8秒

因为在javascript中,我隐藏视图直到所有页面元素都被加载,因此当页面大小为20并且速度非常慢时,它会持续加载8到10秒。

我们是否有一些YII扩展已经通过CListView和S3下载集成解决了这个问题,它可以更快地完成?

1 个答案:

答案 0 :(得分:1)

考虑到当您冷启动应用程序时,您对图像一无所知,S3上可能存在或不存在图像,我没有看到您可以在此处选择的选项,只有一个:缓存。

缓存检索到的项目会有所不同。如果你的商品尺寸不大于1M,Memcache就适合。

另一方面,我会大幅减少对S3的调用(因为它们的成本),可能会在本地保留一个标志,以了解图像是否存在于S3上。并且会直接链接到CDN而不是获取它。

您甚至可以根据用户的位置预加载下一页。您可以使用Message Queue作为Beanstalkd来管理后台作业。