Истеките выходной кэш ASP.NET MVC

Используйте .filter вместо .some:

var hobby = ["sport", "art", "music"];
const checkMessage = (message) => {
  const hobbies = hobby.filter(word => message.includes(word));
  if (hobbies.length !== 0) {
    console.log('Looks like you like ' + hobbies.join(','));
  } else {
    console.log('No matching hobbies found');
  }
};

checkMessage("I love sport!");
checkMessage("foo bar");
checkMessage("music and art");

. ]:

var hobby = ["sport", "art", "music"];
const checkMessage = (message) => {
  const hobbyIndicies = hobby.reduce((a, word, i) => {
    if (message.includes(word)) {
      a.push(i);
    }
    return a;
  }, []);
  if (hobbyIndicies.length !== 0) {
    console.log('Looks like you like indicies ' + hobbyIndicies.join(','));
  } else {
    console.log('No matching hobbies found');
  }
};

checkMessage("I love sport!");
checkMessage("foo bar");
checkMessage("music and art");

14
задан Kevin Hakanson 24 August 2010 в 13:10
поделиться

4 ответа

Будьте осторожны относительно использования "Ни одного" по сравнению с "".

  • Если Вы отправляете "" затем, HttpHeader для Варьируются, не отправляется.
  • Если Вы не отправляете "Ни один" затем, что HttpHeader для Варьируются, отправляется.

Я использовал Скрипача для проверки этого поведения.

Это, кажется, оказывает влияние на то, возвращается ли браузер к серверу для проверки на последнюю версию (порождение 304). По крайней мере, в Chrome это делает. Вы хотите использовать Varies="" если Вы знаете наверняка, что Вы не собираетесь хотеть обновить файл, прежде чем он истек.

Я рекомендовал бы использовать Varies="" поскольку я сделал в этом сообщении. Для моего файла JavaScript я не хочу возвращение браузера и создание другого Запроса HTTP, пока это не истекло. 304 является ненужным.

16
ответ дан 1 December 2019 в 07:19
поделиться

кажется, что выходной кэш ничего не помещает в HttpContent. Кэш, потому что, когда я циклично выполняюсь через него, набор пуст:

For Each elem As DictionaryEntry In HttpContext.Cache
  HttpContext.Cache.Remove(elem.Key)
Next

Вот мой атрибут действия:

<OutputCache(Duration:=600, VaryByParam:="pagename")> _
Function Index(ByVal pagename As String) As ActionResult
1
ответ дан 1 December 2019 в 07:19
поделиться

HttpResponse.RemoveOutputCacheItem() вероятно, метод, который Вы хотите использовать. Если можно выяснить то, что называет действия, кэшируются под, можно удалить просто определенное действие (попытайтесь установить точку останова или вывести все названия кэшируемых элементов на экран),

Иначе я выполнил бы итерации через весь выходной кэш и просто очистил бы каждый объект.

14
ответ дан 1 December 2019 в 07:19
поделиться

Не знаю разница между «None» и «» для VaryByParam, я использовал этот атрибут:

[OutputCache(Location=OutputCacheLocation.ServerAndClient, Duration=int.MaxValue, VaryByParam="none")]

И этот код, чтобы «исправить» проблему Vary: * :

this.Response.Cache.SetOmitVaryStar(true);

Я нашел ссылку на Тесты кэширования ASP.NET находят ошибку с VaryByParam

Разница между OutputCache директива установлена ​​на "Клиент" и "ServerAndClient" - это "ServerAndClient" выводит Vary поле. Это влияет на IE в этом IE отправляет запросы независимо. Использование заголовка var: * может отключить все клиентское кеширование ( http://msdn2.microsoft.com/en-us/library/system.web.httpcachepolicy.setomitvarystar.aspx ).

Единственный способ удалить заголовок Different: * и, таким образом, разрешить кэширование клиента, заключался в использовании кода:

6
ответ дан 1 December 2019 в 07:19
поделиться
Другие вопросы по тегам:

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