2009-08-05 5 views
1

jQuery를 사용하여 서버에서 일부 JSON 데이터를 가져오고 있습니다. POST 동사를 사용하고 있지만 WebMethod CacheDuration 특성을 설정 한 후에도 JSON이 캐시되지 않습니다.asmx asp.net의 POST 요청시 WebMethod 캐싱

Firebug로 응답 헤더를 검사했는데 Cache-Control이 no-cache로 설정되어 있습니다. 어떻게 이러한 요청을 클라이언트에 캐시하고 매번 서버가 손상되지 않도록 할 수 있습니까?

UPDATE

scottGu에서이 post을 읽은 후 나는 POST 요청을 사용하기 위하여 계속하는 것이 안전했을 것이다 생각했다. 그의 게시물은 내가하려는 행동의 종류에 적용되지 않습니까? (서버를 수정하지 않고 데이터를 가져 오는 것). 사실 동사를 GET으로 변경 한 후에도 웹 서비스에 익숙하지 않습니다 ...

+0

AJAX 웹 메서드는 기본적으로 HTTP GET 요청을 사용하지 않으므로 다음 특성이 필요합니다. [ScriptMethod (UseHttpGet = true)] – redsquare

+0

질문에 답변 되었습니까? –

답변

3

get 요청을 사용해야합니다. 게시물은 기본적으로 캐시되지 않습니다. .ajax()를 사용하고 캐시를 true로 설정하고 게시하려면 게시 할 게시물을 가져올 수 있습니다. 일반적으로 캐시 게시물을 기대하지 않기 때문에이 방법이 효과적이라고 말할 수는 없습니다. get을 사용하는 것이 좋습니다.

캐싱을 사용하려면 예컨대

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

나는 그것을했다. 그러나 나는 webmethod에 도착할 수 없다. – ak3nat0n

+1

AJAX 웹 메서드는 기본적으로 HTTP GET 요청을 사용하지 않으므로 다음 특성이 필요합니다. [ScriptMethod (UseHttpGet = true)] – redsquare

+0

Get을 사용하면 캐시되지 않을 때까지 문제가 해결되지 않으며 CacheDuration을 사용하면 서버 사이드 캐싱은 클라이언트 측 캐싱이 아닙니다. – Peter

1

대신 GET 키워드를 사용합니다. SO에 대해서도 비슷한 질문이 있습니다.

0

캐싱 매개 변수가 쿼리 문자열 매개 변수인지, 아니면 (ASP.NET MVC의 경우) 경로 매개 변수인지에 따라 ASP.NET 캐시가 응답하는 방식에 차이가 있습니다.

나는 조건이 정확히 무엇인지 전혀 알지 못했지만 누군가가 도움이 될 수 있습니다.