Кэш-память делает недействительным записи согласно шаблону?

Сохраните Объекты jQuery в Переменных для Повторного использования

, Сохранение объекта jQuery к переменной позволяет Вам снова использовать его, не имея необходимость искать назад через DOM для нахождения его.

(Как @Louis предложенный, я теперь использую $, чтобы указать, что переменная содержит объект jQuery.)

// Bad: searching the DOM multiple times for the same elements
$('div.foo').each...
$('div.foo').each...

// Better: saving that search for re-use
var $foos = $('div.foo');
$foos.each...
$foos.each...

Как более сложный пример, скажите, что у Вас есть список продуктов в хранилище, и Вы хотите показать только тем, которые соответствуют критериям пользователя. У Вас есть форма с флажками, каждый содержащий критерии. Флажки имеют имена как organic и lowfat, и продукты имеют соответствующие классы - .organic, и т.д.

var $allFoods, $matchingFoods;
$allFoods = $('div.food');

Теперь можно продолжать работать с тем объектом jQuery. Каждый раз флажок нажат (чтобы проверить или снять флажок), начать с основного списка продуктов и отфильтровать на основе установленных флажков:

// Whenever a checkbox in the form is clicked (to check or uncheck)...
$someForm.find('input:checkbox').click(function(){

  // Start out assuming all foods should be showing
  // (in case a checkbox was just unchecked)
  var $matchingFoods = $allFoods;

  // Go through all the checked boxes and keep only the foods with
  // a matching class 
  this.closest('form').find("input:checked").each(function() {  
     $matchingFoods = $matchingFoods.filter("." + $(this).attr("name")); 
  });

  // Hide any foods that don't match the criteria
  $allFoods.not($matchingFoods).hide();
});
17
задан Brian Tompsett - 汤莱恩 3 July 2015 в 19:39
поделиться

2 ответа

Лучший способ - предоставить ключ управления версиями при создании ключа кэша памяти. Мы делаем это, предоставляя единственную функцию / метод для создания ключа в нашей системе.

$var1 = 123;
$var2 = 456;
$cacheKey = makeKey('monkeyInfo', $var1, $var2, ...);

makeKey () использует информацию в массиве cacheKeyVersions и возвращает:

5:monkeyInfo:123:456

Обратите внимание на цифру «5» в начале. Это происходит из жестко запрограммированного массива keyNames => версий. Поэтому, если мы хотим аннулировать КАЖДОЕ значение кеша monkeyInfo в системе, нам просто нужно изменить это число на 6 в массиве. С этого момента тот же вызов будет искать

6:monkeyInfo:123:456

Вот пример того, как может выглядеть массив версий ключа. Вызов ' makeKey () ' просто просматривает этот массив, чтобы получить номер версии для любого заданного ключа.

$cacheKeyVersions = array(
    'monkeyInfo'   => 5,
    'zebraInfo'    => 2
);

Вы можете делать все, что угодно, чтобы реализация соответствовала вашим потребностям, но это '

23
ответ дан 30 November 2019 в 12:51
поделиться

memcached не поддерживает удаление в пространстве имен.

В официальной вики-странице есть предложение, как обойти это:

5
ответ дан 30 November 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: