Ці з'яўляецца Safari iOS 6 кэшаваннем $ .ajax вынікаў?

З моманту абнаўлення да iOS 6 мы бачым, што вэб-прагляд Safari дазваляе выконваць кэшаванне выклікаў $.ajax . Гэта ў кантэксце прыкладання PhoneGap, таму яно выкарыстоўвае Safari WebView. Нашы выклікі $.ajax - гэта метады POST , і ў нас устаноўлены кэш ў false {cache:false} , але ўсё ж гэта адбываецца. Мы паспрабавалі ўручную дадаць TimeStamp у загалоўкі, але гэта не дапамагло.

Мы правялі больш даследаванняў і выявілі, што Safari вяртае толькі кэшаваныя вынікі для вэб-сэрвісаў, у якіх ёсць сігнатура функцыі, якая з'яўляецца статычнай і не змяняецца ад выкліку да выкліку. Напрыклад, уявіце сабе функцыю, якая называецца:

 getNewRecordID(intRecordType) 

Гэта функцыя зноў і зноў уводзіць адны і тыя ж параметры ўводу, але вяртаюцца дадзеныя павінны быць рознымі кожны раз.

Павінна быць, у спешцы Apple, каб зрабіць iOS 6 zip уражліва, яны занадта ўзрадаваліся налад кэша. Хто-небудзь яшчэ бачыў гэта паводзіны на iOS 6? Калі так, то што менавіта выклікае яго?


Абыходны шлях, які мы выявілі, заключаўся ў тым, каб змяніць подпіс функцыі такім чынам:

 getNewRecordID(intRecordType, strTimestamp) 

а затым заўсёды перадаваць параметр TimeStamp і проста адкідаць гэтае значэнне на боку сервера. Гэта працуе вакол праблемы. Спадзяюся, гэта дапаможа іншы беднай душы, якая марнуе 15 гадзін на гэтае пытанне, як я!

1001
20 сент. зададзены user1684978 20 сент. 2012-09-20 09:07 '12 ў 9:07 2012/09/20 09:07
@ 25 адказаў

Пасля невялікага даследавання высветлілася, што Safari на iOS6 будзе кэшаваць POST, якія ня маюць ні загалоўкаў Cache-Control, ні нават "Cache-Control: max-age = 0".

Адзіны спосаб, з дапамогай якога прадухіленне гэтага кэшавання адбываецца на глабальным узроўні, а не неабходнасць ўзлому выпадковых querystrings ў канцы выклікаў службы, - усталяваць "Cache-Control: no-cache".

Такім чынам:

  • Няма кэша-кантролю або мінае загаловак = iOS6 Safari будзе кэшаваць
  • Cache-Control max-age = 0 і неадкладны Expires = iOS6 Safari будзе кэшаваць
  • Cache-Control: no-cache = iOS6 Safari НЕ будзе кэшаваць

Я падазраю, што Apple выкарыстоўвае гэта з спецыфікацыі HTTP ў раздзеле 9.5 аб POST:

Адказы на гэты метад не падлягаюць кэшаванню, калі толькі адказ ўключае адпаведныя палі загалоўка Cache-Control або Expires. Аднак, адказ 303 (гл. Іншы) можна выкарыстоўваць для накіравання карыстацкага агента на атрымаць рэсурс, кэшируемый.

Такім чынам, у тэорыі вы можаце кэшаваць адказы POST ... хто ведаў. Але ні адзін іншы браўзэр не думаў, што гэта будзе добрай ідэяй да гэтага часу. Але гэта НЕ ўлічвае кэшаванне, калі не зададзены загалоўкі Cache-Control або Expires, толькі калі ёсць якой-небудзь набор. Так што гэта павінна быць памылка.

Ніжэй я выкарыстоўваю ў правільнай частцы майго Apache-канфігурацыі мэта для ўсяго майго API, таму што, паколькі гэта адбываецца, я фактычна не хачу нічога кэшаваць, нават атрымліваю. Я не ведаю, як усталяваць гэта толькі для POST.

 Header set Cache-Control "no-cache" 

Абнаўленне. Толькі што заўважылі, што я не ўказаў, што гэта толькі калі POST будзе аднолькавым, таму зменіце любыя дадзеныя POST або URL-адрас, і вы ў парадку. Такім чынам, вы можаце, як згадвалася ў іншым месцы, проста дадаць некаторыя выпадковыя дадзеныя ў URL-адрас альбо трохі дадзеных POST.

Абнаўленне: вы можаце абмежаваць "no-cache" толькі POST, калі вы жадаеце гэта ў Apache:

 SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST 
430
20 сент. адказ дадзены Kieran 20 сент. 2012-09-20 19:06 '12 у 19:06 2012/09/20 19:06

Я спадзяюся, што гэта можа спатрэбіцца іншым распрацоўнікам, ўдараюць галавой аб сцяну на гэтым. Я выявіў, што любое з наступных дзеянняў прадухіляе кэшаванне адказу POST Safari на iOS 6:

  • даданне [cache-control: no-cache] у загалоўкі запыту
  • даданне параметру зменнай URL, такога як бягучы час
  • даданне [pragma: no-cache] у загалоўкі адказаў
  • даданне [cache-control: no-cache] у загалоўкі адказаў

Маё рашэнне было наступным ў маім Javascript (усе мае запыты AJAX - POST).

border=0
 $.ajaxSetup({ type: 'POST', headers: { "cache-control": "no-cache" } }); 

Я таксама дадаю загаловак [pragma: no-cache] да многіх адказах майго сервера.

Калі вы выкарыстоўваеце вышэйзгаданае рашэнне, майце на ўвазе, што любыя выклікі $ .ajax (), якія вы робіце, якія ўстаноўлены ў глабальныя: false НЕ будзе выкарыстоўваць параметры, названыя ў $ .ajaxSetup (), таму вам трэба будзе дадаць загалоўкі ў яшчэ раз.

141
12 окт. адказ дадзены Dave 12 каст. 2012-10-12 12:56 '12 у 12:56 2012/10/12 00:56

Простае рашэнне для ўсіх вашых запытаў вэб-сэрвісаў, калі вы карыстаецеся jQuery:

 $.ajaxPrefilter(function (options, originalOptions, jqXHR) { // you can use originalOptions.type || options.type to restrict specific type of requests options.data = jQuery.param($.extend(originalOptions.data||{}, { timeStamp: new Date().getTime() })); }); 

Больш падрабязна аб выкліку prefilter jQuery тут .

Калі вы не выкарыстоўваеце jQuery, праверце дакументы для абранай вамі бібліятэкі. Яны могуць мець падобныя функцыі.

64
21 сент. адказ дадзены Baz1nga 21 сент. 2012-09-21 11:53 '12 у 11:53 2012/09/21 11:53

У мяне была тая ж праблема з атрыманнем Webapp дадзеных з вэб-службы ASP.NET

Гэта спрацавала для мяне:

 public WebService() { HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); ... } 
40
21 сент. адказ дадзены Tadej 21 сент. 2012-09-21 00:28 '12 у 0:28 2012/09/21 00:28

У мяне была гэтая праблема таксама ў дадатку PhoneGap . Я вырашыў гэта, выкарыстоўваючы функцыю JavaScript getTime() наступным чынам:

 var currentTime = new Date(); var n = currentTime.getTime(); postUrl = "http://www.example.com/test.php?nocache="+n; $.post(postUrl, callbackFunction); 

Я выдаткаваў некалькі гадзін на тое, каб зразумець гэта. Было б нядрэнна, калі Apple паведаміць распрацоўнікам аб гэтай праблеме кэшавання.

39
20 сент. адказ дадзены Bashevis 20 сент. 2012-09-20 10:34 '12 у 10:34 2012/09/20 10:34

Нарэшце, у мяне ёсць рашэнне праблемы з загрузкай.

У JavaScript:

 var xhr = new XMLHttpRequest(); xhr.open("post", 'uploader.php', true); xhr.setRequestHeader("pragma", "no-cache"); 

У PHP :

 header('cache-control: no-cache'); 
22
22 сент. адказ дадзены goker.cebeci 22 сент. 2012-09-22 13:16 '12 у 13:16 2012/09/22 13:16

З майго ўласнага паведамленні ў блогу iOS 6.0 кэшаванне AJAX POST-запытаў :

Як гэта выправіць: Існуюць розныя спосабы прадухілення кэшавання запытаў. Рэкамендуемы метад - дадаць загаловак без кэша. Вось як гэта робіцца.

JQuery

Праверце iOS 6.0 і ўсталюйце загаловак Ajax наступным чынам:

 $.ajaxSetup({ cache: false }); 

ZeptoJS:

Праверце iOS 6.0 і ўсталюйце загаловак Ajax наступным чынам:

 $.ajax({ type: 'POST', headers : { "cache-control": "no-cache" }, url : , data:, dataType : 'json', success : function(responseText) {…} 

серверная бок

Java:

 httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); 

Абавязкова дадайце гэта уверсе старонкі, перш чым якія-небудзь дадзеныя будуць адпраўленыя кліенту.

.NET

 Response.Cache.SetNoStore(); 

або

 Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache); 

PHP

 header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1. header('Pragma: no-cache'); // HTTP 1.0. 
14
14 нояб. адказ дадзены kiranvj 14 лістапада. 2012-11-14 09:02 '12 года ў 9:02 2012/11/14 09:02

Гэты фрагмент кода выдатна працуе з jQuery і jQuery Mobile:

 $.ajaxSetup({ cache: false, headers: { 'Cache-Control': 'no-cache' } }); 

Проста змесціце яго дзе-небудзь у свой код JavaScript (пасля загрузкі jQuery і лепш за ўсё перад выкананнем AJAX-запытаў), і гэта павінна дапамагчы.

7
26 янв. адказ дадзены Jonathan 26 студз. 2013-01-26 01:11 '13 у 01:11 2013/01/26 01:11

Гэта абнаўленне адказу Baz1nga. Паколькі options.data не з'яўляецца аб'ектам, а радком, я проста звяртаўся да канкатэнацыі пазнакі часу:

 $.ajaxPrefilter(function (options, originalOptions, jqXHR) { if (originalOptions.type == "post" || options.type == "post") { if (options.data  options.data.length) options.data += " else options.data = ""; options.data += "timeStamp=" + new Date().getTime(); } }); 
5
25 окт. адказ дадзены remcoder 25 каст. 2012-10-25 15:32 '12 у 15:32 2012/10/25 15:32

Вы таксама можаце выправіць гэтую праблему, змяніўшы Jquery Ajax , выканаўшы наступнае (пачынаючы з 1.7.1) у верхняй частцы функцыі Ajax (функцыя пачынаецца з радка 7212). Гэта змяненне актывуе функцыю убудаванага анты-кэша jQuery для ўсіх запытаў POST.

(Поўны script даступны ў http://dl.dropbox.com/u/58016866/jquery-1.7.1.js .)

Уставіць радок 7221:

 if (options.type === "POST") { options.cache = false; } 

Затым зменіце наступнае (пачынаючы з радка ~ 7497).

 if (!s.hasContent) { // If data is available, append data to URL if (s.data) { s.url += (rquery.test(s.url) ? " : "?") + s.data; // #9682: remove data so that it not used in an eventual retry delete s.data; } // Get ifModifiedKey before adding the anti-cache parameter ifModifiedKey = s.url; // Add anti-cache in URL if needed if (s.cache === false) { var ts = jQuery.now(), // Try replacing _= if it is there ret = s.url.replace(rts, "$1_=" + ts); // If nothing was replaced, add timestamp to the end. s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? " : "?") + "_=" + ts : ""); } } an eventual retry if (!s.hasContent) { // If data is available, append data to URL if (s.data) { s.url += (rquery.test(s.url) ? " : "?") + s.data; // #9682: remove data so that it not used in an eventual retry delete s.data; } // Get ifModifiedKey before adding the anti-cache parameter ifModifiedKey = s.url; // Add anti-cache in URL if needed if (s.cache === false) { var ts = jQuery.now(), // Try replacing _= if it is there ret = s.url.replace(rts, "$1_=" + ts); // If nothing was replaced, add timestamp to the end. s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? " : "?") + "_=" + ts : ""); } } 

To:

 // More options handling for requests with no content if (!s.hasContent) { // If data is available, append data to URL if (s.data) { s.url += (rquery.test(s.url) ? " : "?") + s.data; // #9682: remove data so that it not used in an eventual retry delete s.data; } // Get ifModifiedKey before adding the anti-cache parameter ifModifiedKey = s.url; } // Add anti-cache in URL if needed if (s.cache === false) { var ts = jQuery.now(), // Try replacing _= if it is there ret = s.url.replace(rts, "$1_=" + ts); // If nothing was replaced, add timestamp to the end. s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? " : "?") + "_=" + ts : ""); } an eventual retry // More options handling for requests with no content if (!s.hasContent) { // If data is available, append data to URL if (s.data) { s.url += (rquery.test(s.url) ? " : "?") + s.data; // #9682: remove data so that it not used in an eventual retry delete s.data; } // Get ifModifiedKey before adding the anti-cache parameter ifModifiedKey = s.url; } // Add anti-cache in URL if needed if (s.cache === false) { var ts = jQuery.now(), // Try replacing _= if it is there ret = s.url.replace(rts, "$1_=" + ts); // If nothing was replaced, add timestamp to the end. s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? " : "?") + "_=" + ts : ""); } 
5
27 сент. адказ дадзены Sam Shiles 27 сент. 2012-09-27 17:30 '12 ў 17.30 2012/09/27 17:30

Хуткая праца для службаў GWT-RPC заключаецца ў тым, каб дадаць гэта да ўсіх выдаленым метадам:

 getThreadLocalResponse().setHeader("Cache-Control", "no-cache"); 
5
17 окт. адказ дадзены Lars Høidahl 17 каст. 2012-10-17 01:57 '12 года ў 1:57 2012/10/17 01:57

Каб вырашыць гэтую праблему для WebApps, дададзеных на галоўны экран, неабходна выконваць абедзве выкладзеныя вышэй абыходныя шляхі. Кэшаванне неабходна адключыць на вэб-сэрвэры, каб прадухіліць паўторнае кэшаванне новых запытаў, і некаторыя выпадковыя уступныя дадзеныя неабходна дадаваць да кожнага запыце для адпраўкі запытаў, якія ўжо былі кэшаваць для праходжання. Калі ласка, звярніцеся да майго паведамлення:

iOS6 - Ці ёсць спосаб ачысціць кэшаваныя запыты POST ajax для дадання webapp на галоўны экран?

ПАПЯРЭДЖАНЬНЕ: усім, хто рэалізаваў абыходны шлях, дадаўшы часовую пазнаку да сваіх запытам, ня адключаючы кэшаванне на сэрвэры. Калі ваша прыкладанне дадаецца на галоўны экран, КОЖНЫ пост-адказ цяпер будзе кэшавацца, ачыстка кэша сафары не ачысціць яго, і ён, падобна, не скончыцца. Калі ў кагосьці ёсць спосаб яго ачысціць, гэта падобна на патэнцыйную уцечку памяці!

4
28 сент. адказ дадзены fbader 28 сент. 2012-09-28 18:57 '12 у 18:57 2012/09/28 18:57

Што працуе для GWT-RPC

 class AuthenticatingRequestBuilder extends RpcRequestBuilder { @Override protected RequestBuilder doCreate(String serviceEntryPoint) { RequestBuilder requestBuilder = super.doCreate(serviceEntryPoint); requestBuilder.setHeader("Cache-Control", "no-cache"); return requestBuilder; } } AuthenticatingRequestBuilder builder = new AuthenticatingRequestBuilder(); ((ServiceDefTarget)myService).setRpcRequestBuilder(builder); 
3
12 окт. адказ дадзены user905374 12 каст. 2012-10-12 09:55 '12 у 09:55 2012/10/12 09:55

Рэчы, якія НЕ ПРАЦУЮЦЬ для мяне з iPad 4 / iOS 6:

Мой запыт, які змяшчае: Cache-Control: no-cache

 //asp.net's: HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache) 

Даданне кэша: false для майго jQuery ajax-выкліку

  $.ajax( { url: postUrl, type: "POST", cache: false, ... 

Толькі гэта зрабіў трук:

 var currentTime = new Date(); var n = currentTime.getTime(); postUrl = "http://www.example.com/test.php?nocache="+n; $.post(postUrl, callbackFunction); 
3
29 апр. адказ дадзены Brian Ogden 29 крас. 2013-04-29 09:43 '13 у 09:43 2013/04/29 09:43

Маё абыходнае рашэнне ў ASP.NET (pagemethods, webservice і г.д.)

 protected void Application_BeginRequest(object sender, EventArgs e) { Response.Cache.SetCacheability(HttpCacheability.NoCache); } 
2
24 сент. адказ дадзены Alexandre 24 сент. 2012-09-24 16:10 '12 у 16:10 2012/09/24 16:10

Я прапаную абыходнае рашэнне для мадыфікацыі сігнатуры функцыі як нешта падобнае:

getNewRecordID (intRecordType, strTimestamp) а затым заўсёды перадаваць параметр TimeStamp і проста адкідаць гэтае значэнне на боку сервера. Гэта працуе вакол праблемы.

1
28 июля '16 в 19:33 2016-07-28 19:33 адказ дадзены fred1234 28 ліпеня '16 а 19:33 2016/07/28 19:33

Пры даданні параметраў кэша-Бастер, каб зрабіць знешні выгляд запыту падобным на цвёрдае рашэнне, я б параіў гэта зрабіць, так як гэта пашкодзіла б любое прыкладанне, заснаванае на фактычным кэшаванні. Стварэнне API-інтэрфейсаў правільнымі загалоўкамі з'яўляецца найлепшым рашэннем, нават калі гэта крыху больш складана, чым даданне кэш-памяці для выклікаюць.

1
24 сент. адказ дадзены Ivo Jansch 24 сент. 2012-09-24 10:39 '12 у 10:39 2012/09/24 10:39

Для тых, хто выкарыстоўвае Struts 1 , вось як я выправіў праблему.

web.xml

 <filter> <filter-name>SetCacheControl</filter-name> <filter-class>com.example.struts.filters.CacheControlFilter</filter-class> </filter> <filter-mapping> <filter-name>SetCacheControl</filter-name> <url-pattern>*.do</url-pattern> <http-method>POST</http-method> </filter-mapping> 

com.example.struts.filters.CacheControlFilter.js

 package com.example.struts.filters; import java.io.IOException; import java.util.Date; import javax.servlet.*; import javax.servlet.http.HttpServletResponse; public class CacheControlFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse resp = (HttpServletResponse) response; resp.setHeader("Expires", "Mon, 18 Jun 1973 18:00:00 GMT"); resp.setHeader("Last-Modified", new Date().toString()); resp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0"); resp.setHeader("Pragma", "no-cache"); chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { } public void destroy() { } } 
1
10 янв. адказ дадзены cbmeeks 10 студз. 2013-01-10 01:24 '13 года ў 1:24 2013/01/10 01:24

Я змог выправіць сваю праблему, выкарыстоўваючы камбінацыю $ .ajaxSetup і дадаўшы часовую пазнаку да URL-адрасе майго зносін (а не да параметраў / целе паведамленні). Гэта заснавана на рэкамендацыях папярэдніх адказаў.

 $(document).ready(function(){ $.ajaxSetup({ type:'POST', headers: {"cache-control","no-cache"}}); $('#myForm').submit(function() { var data = $('#myForm').serialize(); var now = new Date(); var n = now.getTime(); $.ajax({ type: 'POST', url: 'myendpoint.cfc?method=login data: data, success: function(results){ if(results.success) { window.location = 'app.cfm'; } else { console.log(results); alert('login failed'); } } }); }); }); 
1
19 янв. адказ дадзены ShadeTreeDeveloper 19 студз. 2013-01-19 20:27 '13 у 20:27 2013/01/19 20:27

Я думаю, што вы ўжо вырашылі сваю праблему, але дазвольце мне падзяліцца ідэяй аб вэб-кэшавання.

Праўда, вы можаце дадаць шмат загалоўкаў на кожным выкарыстоўваным вамі мове, на боку сервера, на баку кліента, і вы можаце выкарыстоўваць многія іншыя трукі, каб пазбегнуць кэшавання ў Інтэрнэце, але заўсёды думайце, што вы ніколі не зможаце даведацца, адкуль кліент падключаецца да ваш сервер, вы ніколі не ведаеце, ці выкарыстае ён злучэнне "Hot-Spot" гатэля, якое выкарыстоўвае Squid або іншыя прадукты кэшавання.

Калі карыстальнікі выкарыстоўваюць проксі-сервер, каб схаваць сваю рэальную пазіцыю і г.д. рэальны адзіны спосаб пазбегнуць кэшавання - гэта адзнака часу ў запыце і калі яна не выкарыстоўваецца.

напрыклад:

 /ajax_helper.php?ts=3211321456 

Затым кожны менеджэр кэша, які вы павінны перадаць, не знайшоў той жа URL-адрас у рэпазітары кэша і перагрузіў змесціва старонкі.

1
12 июня '14 в 19:40 2014-06-12 19:40 адказ дадзены Lanello 12 чэрвеня '14 у 19:40 2014/06/12 19:40

У Ruby Sinatra

 before '*' do if env['REQUEST_METHOD'] == 'POST' headers 'Cache-Control' => 'no-cache, no-store, must-revalidate' end end 
0
02 марта '15 в 8:12 2015-03-02 08:12 адказ дадзены jchook 02 сакавіка '15 у 8:12 2015/03/02 08:12

Пакуль мае старонкі ўваходу і рэгістрацыі працуюць як зачараванне ў Firefox, IE і Chrome ... Я змагаўся з гэтай праблемай у Safari для IOS і OSX, некалькі месяцаў таму я знайшоў абыходнае рашэнне для SO.

 <body onunload=""> 

АБО праз javascript

 <script type="text/javascript"> window.onunload = function(e){ e.preventDefault(); return; }; </script> 

Гэта своеасаблівая непрыгожая рэч, але працуе нейкі час.

Я не ведаю чаму, але вяртаючы значэнне null ў падзею onunload , старонка не кэшуецца ў Safari.

0
20 июля '14 в 0:12 2014-07-20 00:12 адказ дадзены Adriano Rosa 20 ліпеня '14 ў 0:12 2014/07/20 00:12

Я знайшоў адно абыходнае рашэнне, з-за якога мне стала цікава, чаму ён працуе. Перш чым прачытаць адказ Tadej аб вэб-сэрвісе ASP.NET, я спрабаваў прыдумаць нешта, што спрацуе.

І я не кажу, што гэта добрае рашэнне, але я проста хацеў зарэгістраваць яго тут.

галоўная старонка: ўключае функцыю JavaScript, checkStatus (). Метад выклікае іншы метад, які выкарыстоўвае выклік jQuery AJAX для абнаўлення змесціва html. Я выкарыстаў setInterval для выкліку checkStatus (). Вядома, я сутыкнуўся з праблемай кэшавання.

Рашэнне: выкарыстоўвайце іншую старонку для выкліку абнаўлення.

На галоўнай старонцы я ўсталяваў лагічную зменную runUpdate і дадаў тэг body:

 <iframe src="helper.html" style="display: none; visibility: hidden;"></iframe> 

У helper.html:

 <meta http-equiv="refresh" content="5"> <script type="text/javascript"> if (parent.runUpdate) { parent.checkStatus(); } </script> 

Такім чынам, калі checkStatus () выклікаецца з галоўнай старонкі, я атрымліваю кэшыраваць кантэнт. Калі я выклікаю checkStatus з даччынай старонкі, я атрымліваю абноўлены кантэнт.

0
08 окт. адказ дадзены CM Kanode 08 каст. 2012-10-08 18:54 '12 а 18:54 2012/10/08 18:54

У залежнасці ад прыкладання вы можаце ліквідаваць праблему цяпер у iOS 6 з дапамогай Safari> Advanced> Web Inspector, так што гэта дапаможа ў гэтай сітуацыі.

Падключыце тэлефон да Safari на Mac, а затым выкарыстоўвайце меню распрацоўніка, каб ліквідаваць праблему з вэб-дадаткам.

Ачысціце дадзеныя вэб-сайта на iPhone пасля абнаўлення да iOS6, у тым ліку і для прыкладання, выкарыстоўваючы вэб-прадстаўленне. Толькі адно прыкладанне мела праблему, і гэта дазволіла яго падчас тэставання бэта-тэставанні IOS6, з таго часу ніякіх рэальных праблем.

Вам можа спатрэбіцца таксама паглядзець ваша прыкладанне, праверце NSURLCache, калі ў WebView ў карыстацкім дадатку.

https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSURLCache_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40003754

Я думаю, у залежнасці ад сапраўднай прыроды вашай праблемы, рэалізацыі і г.д.

Спасылка: $ .ajax calls

0
22 сент. адказ дадзены Steven Strauss 22 сент. 2012-09-22 00:57 '12 у 0:57 2012/09/22 00:57

Ён працаваў з ASP.NET толькі пасля дадання загалоўка pragma:no-cache ў IIS . Cache-Control: no-cache было недастаткова.

-1
25 сент. адказ дадзены Boris 25 сент. 2012-09-25 01:05 '12 ў 1:05 2012/09/25 01:05

Іншыя пытанні па пазнаках або Задайце пытанне