Кэширование asmx WebMethod по запросу POST в asp.net - PullRequest
1 голос
/ 06 августа 2009

Я использую jQuery для получения некоторых данных JSON с сервера. Я использую глагол POST, но даже после установки атрибута CacheDuration WebMethod JSON не кэшируется.

Я проверил заголовки ответа с помощью firebug, и Cache-Control по-прежнему установлен в no-cache. Как я могу кэшировать эти запросы на клиенте и избежать попадания на сервер каждый раз.

UPDATE

После прочтения этой записи от scottGu я подумал, что было бы безопасно продолжать использовать запрос POST. Его пост не относится к той операции, которую я бы попытался сделать? (получение данных с сервера без их изменения). На самом деле после изменения глагола на GET я даже не дохожу до веб-службы ...

Ответы [ 3 ]

3 голосов
/ 06 августа 2009

Вы должны использовать запрос на получение. Пост не кешируется по умолчанию. Вы можете попытаться получить сообщение для кеширования, используя .ajax (), установив для кеша значение true и напечатав сообщение. Я не могу сказать, что это будет работать, так как обычно вы не ожидаете, что сообщение будет кешироваться. Я предлагаю использовать get.

* 1003 например *

$.ajax( { url: '/bla',
          type : 'post',
          data : dataObj,
          cache : true } );
1 голос
/ 06 августа 2009

Вместо этого используйте ключевое слово GET, если вы хотите использовать кэширование. Есть похожий вопрос на SO .

0 голосов
/ 14 октября 2009

Я заметил различия в способах кэширования ответов ASP.NET в зависимости от того, являются ли параметры кэширования параметрами строки запроса или (в моем случае с ASP.NET MVC) параметрами маршрута.

Я так и не понял, какие именно были условия, но это может кому-то помочь.

...