Yii ClistView и S3 для изображений

Я использую Amazon S3 для хранения изображений, а YII CListView используется для отображения каждого элемента страницы. Внутри частичного представления, которое представляет каждый элемент CListView, есть 2 вызова API Amazon S3, один для проверки существования файла, а второй для фактического извлечения изображения и его отображения.

Поскольку размер страницы равен 20, а средняя задержка составляет 200 мс на изображение, то для 20 изображений всего требуется 20 * 200 мс * (2 запроса на элемент) = 8 секунд.

Поскольку в javascript я скрываю представление до загрузки всех элементов страницы, поэтому оно продолжает загружаться в течение 8-10 секунд, когда размер страницы составляет 20, и это довольно медленно.

Есть ли у нас какое-то расширение YII, которое решило эту проблему с интеграцией загрузки CListView и S3, которая делает это быстрее?


person fortm    schedule 01.02.2014    source источник


Ответы (1)


Учитывая, что когда вы запускаете свое приложение в холодном состоянии, вы ничего не знаете о своих изображениях, изображения могут существовать или не существовать на S3, я не вижу много вариантов, которые вы можете здесь выбрать, только один: кеш.

Кэширование извлеченных элементов будет иметь значение. Memcache подойдет, если размер вашего элемента не превышает 1M.

С другой стороны, я бы резко сократил вызовы на S3 (поскольку они стоят), возможно, оставил бы локально флаг, чтобы знать, существует ли образ на S3 или нет. И будет напрямую ссылаться на CDN, а не получать его.

Вы даже можете предварительно загрузить следующие страницы в зависимости от того, где находится пользователь. Вы можете использовать очередь сообщений как Beanstalkd для управления фоновыми заданиями.

person Pentium10    schedule 01.02.2014
comment
Могу ли я использовать Redis для кэширования изображений, поскольку он у меня установлен. Memcache также присутствует в дистрибутиве Mysql 5.6. - person fortm; 02.02.2014