2009-08-05 2 views
1

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

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

UPDATE

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

+0

AJAX Web Methods не разрешает HTTP GET-запросы по умолчанию, поэтому вам нужен следующий атрибут [ScriptMethod (UseHttpGet = true)] – redsquare

+0

На ваш вопрос был дан ответ? –

ответ

3

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

например

$.ajax({ url: '/bla', 
      type : 'post', 
      data : dataObj, 
      cache : true }); 
+0

Я сделал это, но, используя get, я не могу перейти к веб-методу. – ak3nat0n

+1

AJAX Web Methods не разрешает HTTP-запросы GET по умолчанию, поэтому вам нужен следующий атрибут [ScriptMethod (UseHttpGet = true)] – redsquare

+0

Ну, используя Get, он не решает ни одной вещи, пока он не кэшируется, и если мы будем использовать CacheDuration, мы получим сервер боковое кэширование, а не кеширование на стороне клиента. – Peter

1

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

0

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

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

Смежные вопросы