Кэширование списка акционных товаров, для выбора одного случайного товара из кэша — различия между версиями
Kalexey (обсуждение | вклад) м (переименовал «Кэширование списка акционных товаров, для выбора одного случайного товара из кеша» в «[[Кэширование списка акционных това) |
Mad grant (обсуждение | вклад) |
||
Строка 15: | Строка 15: | ||
Так как четкий алгоритм для выборки только id страниц с помощью протокола '''Selector''' еще не опреден, то лучше использовать [http://api.umi-cms.ru/ umiSelection]. Примеры кэширования данных можно посмотреть в этом же разделе, что и эта статья. | Так как четкий алгоритм для выборки только id страниц с помощью протокола '''Selector''' еще не опреден, то лучше использовать [http://api.umi-cms.ru/ umiSelection]. Примеры кэширования данных можно посмотреть в этом же разделе, что и эта статья. | ||
− | [[Категория: Верстка в XSLT ]] [[Категория: Верстка в TPL]] | + | [[Категория: Верстка в XSLT ]] [[Категория: Верстка в TPL]][[Категория:Кеширование]] |
Текущая версия на 12:17, 5 июня 2013
Не редким случаем является тот вариант, когда необходимо на сайте выводить один или несколько акционных товаров, и чтобы при обновлении страницы, из определенного списка эти товары выбирались случайным образом. Если сайт небольшой, мало данных, небольшая посещаемость, то можно конечно используя протокол usel , написать шаблон, по которому в разделе каталога будет случайным образом выбираться один элемент каталога отмеченный чекбоксом Акция. В случае TPL-шаблонизатора, необходимо будет еще использовать макрос %data doSelection()%.
Но если ситуация по сайту совсем иная, это серьезный Интернет магазин, с большой посещаемостью, то было бы неправильным, при каждой загрузке страницы, из всего каталога, выбирать случайным образом товар, с указанными параметрами.
Для решения данного вопроса, без лишней нагрузки на сервер, можно использовать кэширование данных. Из общего списка товаров, которые подходят по нужным условиям, делается сериализованный массив и сохраняется в кэш, можно просто в файл. Кэш можно настроить так, чтобы он обновлялся один раз в час. Данные из Кэша (или из файла) считываются, потом с помощью php-функции array_rand из массива можно выбрать случайное значение (id товара):
$arr_serialize = file_get_contents("…");
$arr_id = unserialize($arr_serialize);
if(!is_array($arr_id) || !sizeof($arr_id)) return "";
$rand_key = array_rand($arr_id);
$page_id = $arr_id[$rand_key];
Так как четкий алгоритм для выборки только id страниц с помощью протокола Selector еще не опреден, то лучше использовать umiSelection. Примеры кэширования данных можно посмотреть в этом же разделе, что и эта статья.