В приложении ASP.NET Core у меня есть метод действий, который возвращает некоторые данные. Я хотел кэш этих данных на стороне клиента. Поэтому на основе documentation here я могу использовать атрибут ResponseCache
для метода действия. Этот атрибут добавляет Cache-Control
заголовка в ответАтрибут ResponseCache не кэширует данные на стороне клиента
Кэширования Response относится к заданию заголовков кэша, связанным с HTTP ответов, сделанных действиями ASP.NET MVC ядра. Эти заголовки указывают, как вы хотите, чтобы клиентские и промежуточные (прокси-серверы) кэшировали ответы на определенные запросы (если вообще). Это может уменьшить количество запросов , которые клиент или прокси делает на веб-сервере, поскольку в будущем запросы на одно и то же действие могут быть отправлены из кеша клиента или прокси .
также
кэширование ответа не кэшировать ответы на веб-сервере. Он отличается от выходного кэширования, который будет кэшировать ответы в памяти на сервере в более ранних версиях ASP.NET и ASP.NET MVC.
Так что это как мой метод действия выглядит
public class LookupController : Controller
{
[HttpGet]
[ResponseCache(Duration = 120)]
public IEnumerable<StateProvinceLookupModel> GetStateProvinces()
{
return _domain.GetStateProvinces();
}
}
Тогда я вызвать метод, используя браузер в качестве http://localhost:40004/lookup/getstateprovinces Здесь в заголовки запроса и ответа
Обратите внимание, что ответ Заголовки имеют Cache-Control: public,max-age-120
, как и ожидалось. Однако, если обновить страницу с помощью F5 (до 120 секунд), точка останова отладчика внутри метода GetStateProvince всегда будет удалена. Это означает, что он не передает данные на стороне клиента.
Есть ли что-то еще, что мне нужно сделать, чтобы включить кеширование на стороне клиента?
Обновление Я пробовал использовать IE, Chrome, а также POSTMAN без везения. Каждый раз, когда я набираю URL-адрес в адресной строке или удаляю обновление, клиент (это браузер или почтальон) делает метод вызова к действию.
@dotnetstep прав, а также f5 (обновление страницы) уже кэш брокера на стороне клиента, как я знаю. просто введите адрес в адресной строке и введите. что, как я проверяю кеш – ergen
@ergen, я также пробовал с POSTMAN без везения – LP13
Не знаю, кто такой человек. давайте проясним: попробуйте просто перейти к URL-адресу в браузере вместо обновления. refresh - это брокер, во-вторых, тип файла важен для кэширования клиентов. например, вы не за исключением вашего 1000 мб видео для кэширования. вы кешируете только .json, так что это не имеет значения. то я уверен, что кеш будет работать, когда вы используете URL-адрес, например licalhost/lookup/getstateprovinces.json. сосредоточиться на расширении и кэшируемых файлах на стороне клиента. даже если вы добавите заголовок в ответ, браузер может не знать ваш файл как статический файл из-за расширения – ergen