Как я могу кэшировать изображения, которые я извлекаю из базы данных magento через ajax? - PullRequest
1 голос
/ 19 мая 2010

Вот скрипт, вызываемый через ajax:

<?php

require_once '../app/Mage.php';
umask(0);

/* not Mage::run(); */
Mage::app('default');

$cat_id = ($_POST['cat_id']) ? $_POST['cat_id'] : NULL;

try { 

    $category = new Mage_Catalog_Model_Category();
    $category->load($cat_id);

    $collection = $category->getProductCollection();

    $output = '<ul>';

    foreach ($collection as $product) {

    $cProduct = Mage::getModel('catalog/product');
    $cProduct->load($product->getId());

        $output .= '<li><img id="'.$product->getId().'" src="' . (string)Mage::helper('catalog/image')->init($cProduct, 'small_image')->resize(75) . '" class="thumb" /></li>';
    }

    $output .= '</ul>';

    echo $output;

} catch (Exception $e) {

    echo 'Caught exception: ', $e->getMessage(), "\n";
}

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

Я использую это в приложении типа «перетащи и брось», и количество возвращаемых изображений иногда составляет 500 с. Так что это довольно сильно задерживается во время передачи, иногда около 10 секунд.

Я знаю, я бы хорошо кешировал их, но не знал, как это сделать. Любая помощь очень ценится.

Спасибо.

-Wes

1 Ответ

0 голосов
/ 19 мая 2010

Судя по виду вашего кода, вы, вероятно, уже "кэшируете" выбранный размер изображения. То есть Magento не нужно вызывать GD, чтобы изменить размер изображения на лету.

Тем не менее, 500 изображений все еще должны быть запрошены у Apache, что будет полной болью в первый раз, независимо от того, что вы делаете. Убедитесь, что Apache настроен на кэширование мультимедиа размера браузера, такого как JPG, в течение довольно длительного периода времени, и вам не нужно повторно загружать изображения при каждой загрузке страницы.

Кроме того, вы можете разработать стратегию использования меньшего количества изображений и запрашивать больше только по мере необходимости. Маловероятно, что пользователь действительно может сосредоточиться на 500 изображениях любым значимым способом.

Надеюсь, это поможет!

Спасибо, Джо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...