얼마전 회사에서 WEB-APP으로 만든 프로그램이 IOS6에서 문제가 발생한다고 연락이 왔습니다.


그래서 테스트를 해보았더니..


동일한 AJAX를 두번 날리면, 먼저 날린 거래를 cache리하는 문제가 발생하는 것입니다.


....귀찮은 문제네요.ㄱ-;


하지만 어쩔수 없이 해결하기 위해 여러가지 테스트를 해보았습니다.


그중에 가장 확실한 방법은 header값을 담아서 날리면 되는것 같더군요.^^


다행히 AJAX util을 추상화 해놓아서.


공통 js파일 하나만 수정해서 해결이 되었습니다.



jQuery를 사용하신다면 아래 Header부분을 추가해주시면 정상적으로 거래가 이루어집니다.


물론 cache옵션은 false로 주는게 좋겠죠?.^^


jQuery.ajax( { type : "POST",

url : "url....",

data : {/*요청값*/},

cache : false,

async : false,

headers: { "cache-control": "no-cache","pragma": "no-cache" },

error : function(xhr, textStatus, errorThrown) {

// 에러시 처리

                                        },

success : function(msg) {


// 처리 로직..


 }

); 



아마 Safari ( 사파리 )에서도 동일한 증상이 있을것으로 예상됩니다.^^ 

  1. 청명의 전조 2013.01.03 18:34 신고

    처음 aJax 요청은 정상적으로 동작하고 다음 동작부터 기존 요청 값이 반복해서 나와 구글링으로 찾다보니 도착했네요 :D 좋은 정보 감사합니다!

    • Favicon of http://iamgil.com BlogIcon 길OI 2013.01.25 13:52 신고

      도움이 되었다니 다행입니다.^^

      자주 찾아와주세요..ㅎㅎ

      근데 쥔장이 게흘러서 글을 잘 안쓰네요.ㅠㅠ

사파리 브라우저로 AJAX를 사용시 커다란 문제가 발생하였습니다.

보통은 10초 이상의 AJAX거래가 잘 없기 때문에 지금까지 잘 발견되지는 않은듯 하지만.

10초 이상의 AJAX 거래시 (sync)로 쏘면 90%의 확률로 async로 쏘면 20%의 확율로 오작동합니다.

여기서 오작동이라함은.

응답코드 : 정상, 상태코드: 정상

의 형태로 응답이 오는데. 실제 응답 데이터는 비어 있는 상태입니다.

그리고 서버에서는 아직 응답을 주지 않은 상태입니다.


원하신다면 제가 재현을 해드릴수도 있습니다.^^;



그래서 결국 safari의 경우에만 form-submit방식을 활용해서 AJAX를 재구현 했습니다.

물론 버그투성이이긴 하지만.. 일단 사용가능 하게 하고 차후에 업데이트(FIX) 할 생각입니다.^^; 


처리한 코드를 원하신다면....간단히 정리하여 올릴 의향이 있습니다만..

요즘 통 블로그를 찾는 분이 없으셔서..ㅋㅋ

 원하는 분이 있지 않을것 같네요.ㅎㅎ


=================================================================================

혹시 정상 적인 AJAX 방법으로 해결하신분 있으시다면...트랙백 좀 부탁드리겠습니다...굽신굽신. 
  1. Safari 싫어 2012.06.29 19:18 신고

    안녕하세요. 저도 Ajax로 HTTP를 동기통신으로 전향해보려고 삽질 하던 중 길님의 포스팅을 발견했습니다.

    제가 경험하고 있는 버그와 거의 같은 현상을 먼저 해결하신 것 같은데. 혹시 form-submit 방식으로 해결하셨다는 방법을 공유해 주실 수 있을까요?

    의견 부탁드리겠습니다.

    • Favicon of http://iamgil.com BlogIcon 길OI 2012.07.02 10:09 신고

      댓글을 이제야 보았네요.^^;;

      해당 내용은 정리해서 포스팅 하도록 하겠습니다...

      목표는..오늘 안에?..^^;;

      오늘 안에 못한다면 제가 게흘러서 죄송합니다.ㅠ

  2. Safari 싫어 2012.07.02 16:50 신고

    언제 보실까 노심초사.. 부담갖지 마시고 여유되실 때 공유 좀 해주시길 부탁드립니다. ㅎ
    주말 내내 macbook 사파리로 1시간간격으로 테스트 해보니까 안정적으로 됬다 안됬다 하더구요.
    멀티플랫폼은 어려워효..

    • Favicon of http://iamgil.com BlogIcon 길OI 2012.07.02 17:34 신고

      저도..참..고생했었는데.^^;

      근데 지금 예전에 만들어 놓은 소스를 찾아보니.

      Sync타입이 아니라 Async 타입이더라구요;

      Sync타입으로 하려면 작업이 더 필요할것 같은데.

      일단...다른작업은 빼고 예전에 만든 소스만 공유해보도록 할께요.^^;

      이게 문제가 한페이지에서 한번밖에 못쓰게 되어 있는데.

      callBack함수명만 서버로 올렸다가..

      내려받아서 처리하면 되긴 할것 같아요.^^;;

      그런 정리를 하고 올리고 싶은데.;;

      업무중이라.ㅠㅠ

      지금은 일단 예전 소스만 올리고..

      천천히 작업해서 올릴께요.ㅠㅠ

    • Favicon of http://iamgil.com BlogIcon 길OI 2012.07.02 20:53 신고

      앗.죄송합니다.

      올렸는데..실수로 비공개로 올렸네요.ㅠㅠ

      다시 공개로 올렸습니다...ㅠㅠ

+ Recent posts