IOS 6 හැඹිලි $ .ajax ප්‍රති results ල මත සෆාරි තිබේද?


1077

IOS 6 වෙත උත්ශ්‍රේණිගත කළ දා සිට, සෆාරිගේ වෙබ් දර්ශනය හැඹිලි $.ajaxඇමතුම් වල නිදහස ලබා ගන්නා බව අපට පෙනේ . මෙය PhoneGap යෙදුමක සන්දර්භය තුළ වන බැවින් එය සෆාරි වෙබ් දර්ශනය භාවිතා කරයි. අපගේ $.ajaxඇමතුම් POSTක්‍රම වන අතර අප සතුව හැඹිලිය අසත්‍ය ලෙස සකසා ඇත {cache:false}, නමුත් තවමත් මෙය සිදුවෙමින් පවතී. අපි TimeStampශීර්ෂ වලට අතින් එකතු කිරීමට උත්සාහ කළ නමුත් එය උදව් කළේ නැත.

අපි වැඩි පර්යේෂණ කළ අතර සෆාරි වෙබ් සේවා සඳහා හැඹිලි ප්‍රති results ල පමණක් ලබා දෙන බව සොයාගෙන ඇති අතර එය ක්‍රියාකාරී අත්සනක් ඇති අතර එය ස්ථිතික වන අතර ඇමතුමේ සිට ඇමතුමට වෙනස් නොවේ. උදාහරණයක් ලෙස, මෙවැනි දෙයක් ලෙස හැඳින්වෙන ශ්‍රිතයක් සිතන්න:

getNewRecordID(intRecordType)

මෙම ශ්‍රිතයට එකම ආදාන පරාමිතීන් නැවත නැවතත් ලැබේ, නමුත් එය ලබා දෙන දත්ත සෑම විටම වෙනස් විය යුතුය.

IOS 6 සිප් එක සෑදීම සඳහා ඇපල් කඩිමුඩියේ සිටිය යුතු අතර ඔවුන් හැඹිලි සැකසුම් ගැන සතුටු විය. IOS 6 හි මෙම හැසිරීම වෙනත් අයෙකු දැක තිබේද? එසේ නම්, එයට හේතුව කුමක්ද?


අපට හමු වූ කාර්යසාධනය නම් ශ්‍රිත අත්සන මේ වගේ දෙයක් ලෙස වෙනස් කිරීමයි:

getNewRecordID(intRecordType, strTimestamp)

ඉන්පසු සෑම විටම TimeStampපරාමිතියකින් පසු වී සේවාදායකයේ පැත්තෙන් එම අගය ඉවතලන්න. මෙය ගැටළුව වටා ක්‍රියාත්මක වේ. මා කළාක් මෙන් මේ කාරණය සඳහා පැය 15 ක් වැය කරන තවත් දුප්පත් ආත්මයකට මෙය උපකාරී වනු ඇතැයි මම බලාපොරොත්තු වෙමි!


190
මෙය ඇත්තෙන්ම කම්පනයකි. අපි දැන් පැය කිහිපයක් ගත කර ඇත්තේ යමක් වැඩ කිරීම නවතා දැමූ දේ සකස් කිරීමට ය. අපගේ AJAX පිවිසුම POST එකක් (සහ හැඹිලි වැළැක්වීම සඳහා ශීර්ෂයන් ඇත) සෆාරි විසින් හැඹිලිගත කරනු ලැබේ, එම නිසා එය සේවාදායකය උත්සාහ නොකර අවසන් වරට කළ JSON නැවත ලබා දෙයි ... විශ්වාස කළ නොහැකි! අපට නිවැරදි කිරීමක් හැක් කිරීමට සිදුවේ, නමුත් ඔබ කිසි විටෙකත් පෝස්ට් එකක් හැඹිලි නොකළ යුතුය, එය පිස්සු ය.
කීරාන්

16
ඔබේ විසඳුම ප්‍රශ්නයට යාවත්කාලීන කිරීමකට වඩා පිළිතුරක් ලෙස පළ කරන්න.
ක්‍රිස්එෆ්

50
තැපැල් ඉල්ලීම් ඔවුන් හැඹිලිගත නොකළ යුතුය, ඉන් අදහස් වන්නේ, නොවන idempotent වේ නම් මිස ප්රතිචාරය විශේෂයෙන් එහි ප්රතිචාර ශීර්ෂ හරහා එසේ උපදෙස් දෙයි.
ජේම්ස් එම්. ග්‍රීන්

6
මෙය නිවැරදි කිරීමට ඇපල් ලබා ගැනීමට, bugreport.apple.com හි දෝෂයක් ගොනු කරන්න . මමත් ඒ දේම කළා.
මතියස් බයිනන්ස්

11
IETF HTTPbis ක්‍රියාකාරී කණ්ඩායමේ සභාපති මාර්ක් නොටිංහැම් අද මේ ගැන රසවත් බ්ලොග් සටහනක් ලිවීය: mnot.net/blog/2012/09/24/caching_POST
බෙන්ජමින්

Answers:


448

මඳක් විමර්ශනය කිරීමෙන් පසුව, iOS6 හි සෆාරි විසින් හැඹිලි-පාලන ශීර්ෂයන් හෝ "හැඹිලි-පාලනය: උපරිම-වයස = 0" නොමැති පෝස්ට් හැඹිලිය හැකි බව පෙනේ.

සේවා ඇමතුම් අවසානයේ අහඹු විමසුම් හැක් කිරීමට වඩා ගෝලීය මට්ටමින් මෙම හැඹිලිය වැළැක්වීම සඳහා මා සොයාගත් එකම ක්‍රමය වන්නේ "හැඹිලි-පාලනය: හැඹිලියක්" සැකසීමයි.

නිසා:

  • හැඹිලි පාලනයක් හෝ කල් ඉකුත් වන ශීර්ෂයන් නොමැත = iOS6 සෆාරි හැඹිලිගත නොකරයි
  • හැඹිලි පාලනය උපරිම-වයස = 0 සහ ක්ෂණික කල් ඉකුත්වීම = iOS6 සෆාරි හැඹිලිය
  • හැඹිලි පාලනය: no-cache = iOS6 සෆාරි හැඹිලි නොවේ

POST ගැන 9.5 වගන්තියේ ඇති HTTP පිරිවිතරයෙන් ඇපල් මෙයින් වාසි ලබා ගනී යැයි මම සැක කරමි:

ප්‍රතිචාරයට සුදුසු හැඹිලි පාලනය හෝ කල් ඉකුත් වූ ශීර්ෂ ක්ෂේත්‍ර ඇතුළත් නොවේ නම් මෙම ක්‍රමයට ප්‍රතිචාර හැඹිලිගත කළ නොහැක. කෙසේ වෙතත්, 303 (වෙනත් බලන්න) ප්‍රතිචාරය මඟින් හැඹිලි සම්පතක් ලබා ගැනීමට පරිශීලක නියෝජිතයා යොමු කිරීමට භාවිතා කළ හැකිය.

එබැවින් න්‍යාය අනුව ඔබට POST ප්‍රතිචාර දැක්විය හැකිය ... කවුද දැන සිටියේ. නමුත් වෙනත් බ්‍රව්සර් නිෂ්පාදකයෙකු මෙතෙක් එය හොඳ අදහසක් වනු ඇතැයි සිතුවේ නැත. හැඹිලි පාලනය හෝ කල් ඉකුත් වූ ශීර්ෂයන් සකසා නොමැති විට එය හැඹිලිය සඳහා ගණන් නොගනී, යම් කට්ටලයක් ඇති විට පමණි. එබැවින් එය දෝෂයක් විය යුතුය.

පහත දැක්වෙන්නේ මගේ මුළු API එකම ඉලක්ක කර ගැනීම සඳහා මගේ Apache වින්‍යාසයෙහි නිවැරදි බිට් එකේ භාවිතා කරන දෙයයි. මන්ද එය සිදු වන විට මට කිසිවක් හැඹිලි කිරීමට අවශ්‍ය නැත. මම නොදන්නා දෙය මෙය POST සඳහා පමණක් සකසන්නේ කෙසේද යන්නයි.

Header set Cache-Control "no-cache"

යාවත්කාලීන කිරීම: POST එක සමාන වූ විට පමණක් බව මම පෙන්වා නොදුන් බව දුටුවෙමි, එබැවින් ඕනෑම POST දත්ත හෝ URL වෙනස් කරන්න, එවිට ඔබ හොඳින්. එබැවින් ඔබට වෙනත් තැනක සඳහන් කළ පරිදි URL වෙත අහඹු දත්ත කිහිපයක් හෝ POST දත්ත ටිකක් එකතු කළ හැකිය.

යාවත්කාලීන කිරීම: ඔබට Apache හි මේ ආකාරයට අවශ්‍ය නම් "හැඹිලිය" POST වලට පමණක් සීමා කළ හැකිය:

SetEnvIf Request_Method "POST" IS_POST
Header set Cache-Control "no-cache" env=IS_POST

7
ඇපල් මේ සමඟ යන්නේ කොතැනට දැයි මට පෙනේ, නමුත් අපගේ ප්‍රතිචාරවලට හැඹිලි පාලනයක් හෝ කල් ඉකුත් වූ ශීර්ෂයන් ඇතුළත් නොවූ විට පවා POST ඉල්ලීම් සඳහා හැඹිලි ප්‍රතිචාර දැක්වේ. මෙම අවස්ථාව iOS6 හැඹිලිය හා සෑම ඉල්ලීමක්ම යැවිය යුතු නොවේද? මෙය සිදු නොවේ.
කැන්ගෝ_වී

139
ඔබ උපුටා ගත් HTTP පිරිවිතරයේ කොටස iOS 6 හි හැඹිලි හැසිරීම සාධාරණීකරණය නොකරයි. පෙරනිමි හැසිරීම විය යුත්තේ POST ප්‍රතිචාර හැඹිලි නොකිරීමයි (එනම් "හැඹිලි-පාලන" ශීර්ෂය අර්ථ දක්වා නොමැති විට). හැසිරීම පිරිවිතර උල්ලං lates නය කරන අතර එය දෝෂයක් ලෙස සැලකිය යුතුය. Xml / json api වෙබ් සේවා සාදන ඕනෑම අයෙකු මෙම ගැටළුව විසඳීම සඳහා ඔවුන්ගේ POST ප්‍රතිචාර "Cache-control: no-cache" වලින් සරසා ගත යුතුය.
ඩේවිඩ් එච්

39
තැපැල් ඉල්ලීම් ඔවුන් හැඹිලිගත නොකළ යුතුය, ඉන් අදහස් වන්නේ, නොවන idempotent වේ නම් මිස ප්රතිචාරය විශේෂයෙන් එහි ප්රතිචාර ශීර්ෂ හරහා එසේ උපදෙස් දෙයි.
ජේම්ස් එම්. ග්‍රීන්

4
ඩේවිඩ් පවසන පරිදි, එය ඔබ උපුටා ගත් වාක්‍යයේ පැහැදිලි උල්ලං violation නය කිරීමකි. "හැඹිලි පාලනය හෝ ශීර්ෂක ක්ෂේත්‍ර කල් ඉකුත්වීම" නොමැති නම්, සුදුසු එවැනි ශීර්ෂයන් පැහැදිලිවම ඇතුළත් නොවේ. එහෙත් ඔබේම පරීක්ෂණයෙන් පෙනී යන්නේ එය එම තත්වය තුළ රඳවා ඇති බවයි. කරුණාකර ඔබේ පිළිතුර සංස්කරණය කරන්න.
මැතිව් ෆ්ලැෂෙන්

3
උපාංගයක් මත කොපමණ කාලයක් ප්‍රති result ල හැඹිලිගත කර ඇත්දැයි යමෙක් දන්නවාද? මම සෆාරි killing ාතනය කර මගේ දුරකථනය නැවත ආරම්භ කිරීමට උත්සාහ කර ඇත, නමුත් එය තවමත් හැඹිලිගත කර ඇත. බ්‍රව්සර් හැඹිලිය ඉවත් කිරීම සමඟ එය ක්‍රියාත්මක වන බව මම දනිමි, නමුත් එය ඉවත් වීමට පෙර වරක් ගැටලුව ඇති පරිශීලකයින්ට කොපමණ කාලයක් ගතවේදැයි මම කල්පනා කරමි. සෑම කෙනෙකුම ඔවුන්ගේ හැඹිලිය ඉවත් කිරීමට සිතන්නේ නැත ...
ඩැනියෙල් හෝල්ක්විස්ට්

147

මෙම සංවර්ධනයේ බිත්තියට හිස ගසා අනෙක් සංවර්ධකයින්ට මෙය ප්‍රයෝජනවත් වනු ඇතැයි මම බලාපොරොත්තු වෙමි. IOS 6 හි සෆාරි POST ප්‍රතිචාරය හැඹිලි කිරීමෙන් වළක්වන බව මට පෙනී ගියේය:

  • ඉල්ලීම් ශීර්ෂයන්හි [හැඹිලි පාලනය: හැඹිලි නැත] එකතු කිරීම
  • වත්මන් කාලය වැනි විචල්ය URL පරාමිතියක් එක් කිරීම
  • ප්‍රතිචාර ශීර්ෂයන්හි [ප්‍රාග්මා: නෝ-කෑෂ්] එකතු කිරීම
  • ප්‍රතිචාර ශීර්ෂයන්හි [හැඹිලි-පාලනය: හැඹිලි නැත] එකතු කිරීම

මගේ විසඳුම මගේ ජාවාස්ක්‍රිප්ට් හි පහත දැක්වේ (මගේ සියලු අජැක්ස් ඉල්ලීම් POST).

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

මගේ සේවාදායක ප්‍රතිචාර බොහොමයකට මම [ප්‍රාග්මා: නෝ-කෑෂ්] ශීර්ෂය එක් කරමි.

ඔබ ඉහත විසඳුම භාවිතා කරන්නේ නම් ගෝලීය ලෙස සකසා ඇති ඕනෑම $ .ajax () ඇමතුම්: අසත්‍යය $ .ajaxSetup () හි නිශ්චිතව දක්වා ඇති සැකසුම් භාවිතා නොකරන බව මතක තබා ගන්න, එබැවින් ඔබට නැවත ශීර්ෂ එකතු කිරීමට අවශ්‍ය වනු ඇත.


4
මෙය දෝෂයට නිවැරදි විසඳුමයි. දෝෂය නම්, iOS 6 විසින් POST ඉල්ලීම් සේවාදායකයට යැවීම වෙනුවට එහි හැඹිලියෙන් ලබා දෙනු ඇත. දෝෂය යනු එය POST ඉල්ලීම් වලින් ප්‍රතිචාර ලබා ගැනීම නොවේ (එය අවසර ඇත). එම යූආර්අයි වෙත පසුව ලැබෙන GET ඉල්ලීම් සඳහා හැඹිලියෙන් ලබාගත් POST ඉල්ලීම් වලට ප්‍රතිචාර තවමත් ඔබට අවශ්‍ය නම්, මෙම විසඳුම භාවිතා කරන්න.
නිකලස් ෂෑන්ක්ස්

2
මෙය මට වැඩ කරයි, නමුත් එය කෙසේ දැයි මට තේරෙන්නේ නැත. මම දැනටමත් හැඹිලිය නියම කර ඇත: මගේ අජැක්ස්සෙට්අප් එකේ අසත්‍යය, සහ ඉල්ලීම් ශීර්ෂයන් දෙස බලන විට, එය හැඹිලි පාලනයට තල්ලු වේ: හැඹිලි සහ ප්‍රාග්මා: නැත-හැඹිලිය - නමුත් එය තවමත් අයිපෑඩ් මත හැඹිලිය වනු ඇත. ඉන්පසු මම ශීර්ෂයන් එකතු කරන විට: a "හැඹිලි-පාලනය": "නො-හැඹිලිය" a අජැක්ස් සෙටප් වෙත, එය හැඹිලි පාලක ශීර්ෂය "නො-හැඹිලිය, හැඹිලිය" ලෙස දෙගුණ කරයි - සහ හැඹිලිය නතර කරයි. මෙහි සිදුවන්නේ කුමක්ද?
ටොම් ඩබ් හෝල්

පරිපූර්ණ ලෙස ක්‍රියා කරයි - ඔබට පරාමිතියක් ලෙස ඉල්ලීමට එකතු කළ හැකිය a .ජැක්ස් ({වර්ගය: 'POST', ශීර්ෂ: ache 'හැඹිලි පාලනය': 'හැඹිලි නැත' etc., ආදිය.})
ජෝර්ජ් ෆිලිපකෝස්

[ප්‍රග්මා: නෝ-කෑෂ්] යනු කුමක්ද? භාවිතා කරන ප්‍රාග්මා යතුර කුමක්ද?
zakdances

අතිරේක පරාමිතියක් සහිත ක්‍රියාකාරීත්වයට වඩා මෙය හොඳම ප්‍රවේශය යැයි මම සිතමි. අපි මෙය අවශ්‍ය වූ ඇමතුම් සඳහා පමණක් එකතු කර ඇත්තෙමු, සෑම විටම එකම ප්‍රතිලාභයක් ඇති ඇමතුම් සඳහා, හැඹිලිය අවසාන පරිශීලකයාට හොඳ දෙයක් විය හැකිය.
ජර්මන්කිවි

68

ඔබ 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()
    }));
});

JQuery prefilter ඇමතුම පිළිබඳ වැඩිදුර කියවන්න මෙතැන .

ඔබ jQuery භාවිතා නොකරන්නේ නම්, ඔබ කැමති පුස්තකාලය සඳහා ලියකියවිලි පරීක්ෂා කරන්න. ඔවුන්ට සමාන ක්‍රියාකාරීත්වයක් තිබිය හැකිය.


3
එය මට වැඩ කරන්නේ නැත, සේවාදායකයා ප්‍රතිචාර දක්වයි: "අවලංගු ප්‍රාථමික JSON: timeStamp" asp.net / iis 7.5
ඇලෙක්සැන්ඩ්‍රේ

3
a .ajax ({"හැඹිලිය": අසත්‍යය ...}) ගැන කුමක් කිව හැකිද? එය _ = [TIMESTAMP] එකතු කරන විට එය ක්‍රියාත්මක වේද? (එය පරීක්ෂා කිරීම සඳහා එවැනි උපකරණයක් මා සතුව නොමැත)
කරුසෙල්

කරුසෙල් විසින් යෝජනා කරන ලද විසඳුම සම්පූර්ණයෙන් ක්‍රියාත්මක කිරීමට මම පළ කර ඇත්තෙමි. මගේ පිළිතුර පහතින් බලන්න.
සෑම් ෂයිල්ස්

1
Ar කරුසෙල්. Set .ajax ({"හැඹිලිය": අසත්‍යය ...}) සැකසීමට උත්සාහ කළා. මෙය iOS6 හි POST ඉල්ලීම් සඳහා වන ගැටළුව විසඳන්නේ නැත. JQuery ඔවුන්ගේ ලේඛනයට අනුව තැපැල් ඉල්ලීම් හැඹිලි කිරීමට තරම් බ්‍රව්සරයක් මෝඩ නැතැයි උපකල්පනය කරයි. "POST සමඟ ලබාගත් පිටු කිසි විටෙකත් හැඹිලිගත නොකෙරේ. එබැවින් jQuery.ajaxSetup () හි ඇති හැඹිලිය සහ ifModified විකල්ප මෙම ඉල්ලීම් කෙරෙහි කිසිදු බලපෑමක් ඇති නොකරයි."
බ්‍රෙට් හැනා

1
මෙය ක්‍රියාත්මක නොවේ. එය පශ්චාත් පරාමිතීන් ඒකාබද්ධ නොකරයි. ඩේව් විසින් පළ කරන ලද ලිපිය වඩා හොඳ විසඳුමකි.
ක්‍රිස් මුවෙන්ච්

43

මට මේ ප්‍රශ්නයත් තිබුණා ගැප් යෙදුමක ය. getTime()පහත දැක්වෙන ආකාරයට ජාවාස්ක්‍රිප්ට් ශ්‍රිතය භාවිතා කිරීමෙන් මම එය විසඳා ගත්තෙමි :

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

මම මේක හොයාගෙන පැය කිහිපයක් නාස්ති කළා. මෙම හැඹිලි ගැටළුව සංවර්ධකයින්ට දැනුම් දීම ඇපල් සමාගමට සතුටක් වනු ඇත.


1
මම භාවිතා කිරීම ගැන අදහස් දැක්වීම යන {cache:false}එක්කෝ විකල්පයක් ලෙස $.post()හෝ $.ajaxSetup(), නමුත් අනුව එම ලේඛන , මෙම තර්ක නොසලකා හරිනු ලැබේ; jQuery පෝස්ට් ඉල්ලීම් 'කිසි විටෙකත් හැඹිලිගත නොකරයි', නමුත් බ්‍රව්සරය සැලකිල්ලට නොගනී. සමහර විට නියත විකල්පයක් වනුයේ ඉල්ලීම් සඳහා කාලරාමුව එක් කිරීමයි $.ajaxPrefilter().
fwielstra

මම මේ ප්රශ්නය අදාල කරුණ නිවැරදි කිරීමට තරම් 5 පැය, සහ අවසාන කාල මුද්රාව එකතු උපාය කරන්නේ function send_ajax(my_data,refresh) .. මෙතන යොමු stackoverflow.com/questions/14733772/...
rusly

42

ASP.NET වෙබ් සේවා වෙතින් වෙබ්අප් දත්ත ලබා ගැනීමේදී මටද එම ගැටළුවම තිබුණි

මෙය මට ප්‍රයෝජනවත් විය:

public WebService()
{
    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
    ...
}

2
බොහොම ස්තූතියි! අයිෆෝන් අනෙක් සෑම වේදිකාවකටම වඩා වෙනස් ලෙස ක්‍රියා කරන්නේ මන්දැයි වටහා ගැනීමට මම පිස්සු වැටෙමින් සිටියෙමි. මෙම ASP.NET විශේෂිත විසඳුම මට ටොන් ගණනක් ඉතිරි කළේය.
මාර්ක් බ්‍රිටිංහැම්

IOS6 හි වැඩ නොකළේ නූල් අවසානයේ මගේ පිළිතුර බලන්න
බ්‍රයන් ඔග්ඩන්

1
කරුණාකර!!!! මෙය IOS 6 මත පමණක් යෙදීම සඳහා කොන්දේසියක් තබන්න, ඕනෑම යෙදුමකට අන්තර්ගත හැඹිලිය අත්‍යවශ්‍ය වේ.
ඇලෙක්සැන්ඩ්‍රේ

24

අවසාන වශයෙන්, මගේ උඩුගත කිරීමේ ගැටලුවට විසඳුමක් ඇත.

JavaScript හි:

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

දී , PHP :

header('cache-control: no-cache');

15

මගේම බ්ලොග් සටහනකින් iOS 6.0 හැඹිලි අජැක්ස් පෝස්ට් ඉල්ලීම් :

එය නිවැරදි කරන්නේ කෙසේද: ඉල්ලීම් හැඹිලි වැළැක්වීම සඳහා විවිධ ක්‍රම තිබේ. නිර්දේශිත ක්‍රමය වන්නේ හැඹිලි ශීර්ෂයක් එක් කිරීමයි. එය සිදු වන්නේ එලෙස ය.

jQuery:

IOS 6.0 සඳහා පරීක්ෂා කර අජැක්ස් ශීර්ෂය මේ ආකාරයට සකසන්න:

$.ajaxSetup({ cache: false });

ZeptoJS:

IOS 6.0 සඳහා පරීක්ෂා කර අජැක්ස් ශීර්ෂය මේ ආකාරයට සකසන්න:

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

සේවාදායක පැත්ත

ජාවා:

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

ඕනෑම දත්තයක් සේවාදායකයාට යැවීමට පෙර මෙය පිටුවේ ඉහළින්ම එක් කිරීමට වග බලා ගන්න.

.ශුද්ධ

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.


7

මෙම ජාවාස්ක්‍රිප්ට් ස්නිපටය jQuery සහ jQuery මොබයිල් සමඟ හොඳින් ක්‍රියා කරයි:

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

එය ඔබගේ ජාවාස්ක්‍රිප්ට් කේතයේ කොතැනක හෝ තබන්න (jQuery පැටවූ පසු, සහ ඔබ AJAX ඉල්ලීම් කිරීමට පෙර හොඳම) එය උදව් විය යුතුය.


6

JQuery අජැක්ස් වෙනස් කිරීමෙන් ඔබට මෙම ගැටළුව විසඳා ගත හැකියපහත දැක්වෙන දේ (1.7.1 වන විට) අජැක්ස් ශ්‍රිතයේ ඉහළට සිදු කිරීමෙන් ශ්‍රිතය (ශ්‍රිතය ආරම්භ වන්නේ 7212 පේළියේ). මෙම වෙනස සියලු POST ඉල්ලීම් සඳහා jQuery හි ප්‍රති-හැඹිලි ප්‍රති-ලක්ෂණය සක්‍රිය කරනු ඇත.

(සම්පූර්ණ පිටපත ලබා ගත හැකිය http://dl.dropbox.com/u/58016866/jquery-1.7.1.js .)

7221 පේළියට පහළින් ඇතුළු කරන්න:

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

ඉන්පසු පහත සඳහන් දේ වෙනස් කරන්න (line 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's 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 : "");
    }
}

වෙත:

// 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's 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 : "");
}

4
JQuery වෙනස් කිරීම හෝ ඒ සඳහා ඔබට අයිති නැති කේතයක් වෙනස් කිරීම හොඳ ප්‍රවේශයක් නොවේ. (ඔබට අනුවාදය යාවත්කාලීන කිරීමට අවශ්‍ය සෑම අවස්ථාවකම ඔබට නැවත වෙනසක් කිරීමට සිදුවේ. (නැතහොත් තවත් සංවර්ධක යාවත්කාලීන කිරීම් සහ වැඩසටහන ක්‍රියාත්මක නොවේ))
andlrc

ඇපල්ගේ මෝඩකම අවම කිරීම සඳහා ඔබට හැකි ඉක්මණින් විසඳුමක් අවශ්‍ය නම් එය පරිපූර්ණ වලංගු ප්‍රවේශයකි. දිනකට මිලියන ගණනක් ලැබෙන දැවැන්ත වෙබ් අඩවියක් සඳහා වන ගැටළුව විසඳීම සඳහා මෙම විසඳුම භාවිතා කර ඇති අතර එය එක් ගොනුවකට වෙනසක් කිරීමෙන් පමණක් එය කිරීමට අපට හැකි විය.
සෑම් ෂයිල්ස්

ඔබට එය බැලීමට jQuery.ajaxPrefilerපෙර ඔබේ අජැක්ස් ඉල්ලීම වෙනස් කිරීමට පෙර එය වෙනස් කිරීමට ඉඩ දෙයි. ඔබට වඩාත් ප්‍රශස්තිකරණය කර ආරක්‍ෂිත කේතය යාවත්කාලීන කළ හැකිය.
andlrc

1
PreFilter ප්‍රවේශයේ ඇති ගැටළුව නම් ඔබ පෙරණය ලියාපදිංචි කළ යුතුය. සෑම පිටුවක්ම පටවන විට ක්‍රියාත්මක වන පොදු පිටපතක් ඔබ සතුව ඇත්නම් හොඳයි, නමුත් එසේ නොවේ නම් ඔබට අජැක්ස් භාවිතා කරන සෑම පිටුවක් සඳහාම පෙර ෆිල්ටරය සැකසිය යුතුය. මා මුහුණ දුන් තත්වය, අපට JQ ගොනුව සඳහා පොදු ස්ථානයක් තිබී ඇති අතර එය තනි වෙබ් අඩවි 7+ සඳහා සම්පතක් ලෙස භාවිතා කරන ලදී. මෙම දෝෂය හේතුවෙන් අපට පැයකට පවුම් දහස් ගණනක් අහිමි වන අතර මා යෝජනා කළ ප්‍රවේශය මඟින් එක් ගොනුවක් වෙනස් කිරීමෙන් කෙටිම කාලයකින් එය විසඳා ගැනීමට අපට හැකි විය. විදුහල්පති වශයෙන් මම ඔබ සමඟ එකඟ වන නමුත් සමහර විට ඔබ ප්‍රායෝගික විය යුතුය!
සෑම් ෂයිල්ස්

ඔබට එය නැවත එම ගොනුවේ අවසානයට එක් කළ හැකිය. ඔබ එය විසඳීම හොඳයි, ඔබේ සමාගම ඔබ ගැන සතුටු විය යුතුයි.
andlrc

5

GWT-RPC සේවාවන් සඳහා ඉක්මන් වැඩක් නම් මෙය සියලුම දුරස්ථ ක්‍රමවලට එකතු කිරීමයි:

getThreadLocalResponse().setHeader("Cache-Control", "no-cache");

අපගෙන් බොහෝ දෙනෙකුට ඔවුන්ගේ ජීඩබ්ලිව්ටී යෙදවීමේදී දුරස්ථ ක්‍රම සිය ගණනක් ඇත. සියලුම ඉල්ලීම් සඳහා හැඹිලි පාලන ශීර්ෂය සැකසීමට විශ්වීය ක්‍රමයක් තිබේද?
dirkoneill

5

මෙය Baz1nga හි පිළිතුරේ යාවත්කාලීන කිරීමකි. සිට options.dataවස්තුවක් නමුත් මම හුදෙක් විකරණය කොට concatenating පිහිට වැලක් නොවේ:

$.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();
  }
});

1
කාලරාමු එකතු කිරීම නරක අදහසකි, ඒ වෙනුවට ඩේව්ගේ විසඳුම උත්සාහ කරන්න.
නිකලස් ෂෑන්ක්ස්

4

මුල් තිරයට එකතු කරන ලද වෙබ් ඇප්ස් සඳහා මෙම ගැටළුව විසඳීම සඳහා, ඉහළම ඡන්දය ප්‍රකාශ කළ ක්‍රියාමාර්ග දෙකම අනුගමනය කළ යුතුය. නව ඉල්ලීම් ඉදිරියට යාම වැළැක්වීම සඳහා වෙබ් සේවාදායකය මත හැඹිලිය අක්‍රිය කළ යුතු අතර දැනටමත් හැඹිලි කර ඇති ඉල්ලීම් ඉදිරියට යාම සඳහා සෑම තැපැල් ඉල්ලීමකටම අහඹු ආදානයක් එක් කළ යුතුය. කරුණාකර මගේ සටහන බලන්න:

iOS6 - මුල් පිටුව තිරයට එකතු කරන ලද වෙබ් ඇප් සඳහා හැඹිලි අජැක්ස් POST ඉල්ලීම් ඉවත් කිරීමට ක්‍රමයක් තිබේද?

අවවාදයයි: සේවාදායකයේ හැඹිලි ක්‍රියා විරහිත නොකර ඔවුන්ගේ ඉල්ලීම් වලට කාලරාමුවක් එක් කිරීමෙන් වැඩකරන ක්‍රියාවලියක් ක්‍රියාත්මක කළ ඕනෑම කෙනෙකුට. ඔබගේ යෙදුම මුල් තිරයට එකතු කර ඇත්නම්, සෑම පෝස්ට් ප්‍රතිචාරයක්ම දැන් හැඹිලිගත වනු ඇත, සෆාරි හැඹිලිය ඉවත් කිරීමෙන් එය ඉවත් නොවන අතර එය කල් ඉකුත් වන බවක් නොපෙනේ. යමෙකුට එය ඉවත් කිරීමට ක්‍රමයක් නොමැති නම්, මෙය විභව මතක කාන්දුවක් සේ පෙනේ!


සියලුම ප්‍රතිචාර දුරකථනයේ ගොනු කිරීමට හෝ මතකයට රඳවා ගත හැකිද?
අයිඩුන්

මට මෙය එසේ නොවීය. මම මගේ යූආර්එල් වෙත කාල මුද්දරයක් එකතු කළෙමි (පශ්චාත් පරාමිතීන් නොවේ) එය සෆාරි වෙතින් සැරිසරන විට සහ මුල් තිරයට සුරැකීමේදී එය හොඳින් ක්‍රියාත්මක වේ.
ShadeTreeDeveloper

4

වැඩ නොකළ දේවල්අයිපෑඩ් 4 / iOS 6 සමඟ මා වෙනුවෙන් :

මගේ ඉල්ලීම අඩංගු වන්නේ: හැඹිලි පාලනය: හැඹිලිය නැත

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

හැඹිලිය එකතු කිරීම: මගේ jQuery අජැක්ස් ඇමතුමට අසත්‍යය

 $.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);

පහත දැක්වෙන ඡන්දය කුමක්ද? මෙය වැදගත් තොරතුරු හැඹිලියකි: අසත්‍යය iPad4 / iOS6 සමඟ ක්‍රියා නොකරයි. //Asp.net හි: HttpContext.Current.Response.Cache.SetCacheability (HttpCacheability.NoCache)
බ්‍රයන් ඔග්ඩන්

පසු පරම්පරාව සඳහා: 2017 වන $.ajax cache: falseවිට විමසුම් පරාමිතිය සමඟ යූආර්එල් _=Date.prototype.getTime()එකතු කරයි, එබැවින් කාලරාමුව අතින් එකතු කිරීම තවදුරටත් අවශ්‍ය නොවේ.
කව්බර්ට්

3

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);    

2

ASP.NET හි මගේ ක්‍රියාකාරිත්වය (පිටු ක්‍රම, වෙබ් සේවා, ආදිය)

protected void Application_BeginRequest(object sender, EventArgs e)
{
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
}

1

ඉල්ලීම වෙනස් පෙනුමක් ලබා ගැනීම සඳහා හැඹිලි-බස්ටර් පරාමිතීන් එකතු කිරීම solution න විසඳුමක් සේ පෙනුනද, සත්‍ය හැඹිලිය මත රඳා පවතින ඕනෑම යෙදුමකට එය හානියක් වන බැවින් මම එයට එරෙහිව උපදෙස් දෙමි. ඒපීඅයි ප්‍රතිදානය නිවැරදි ශීර්ෂයන් බවට පත් කිරීම හොඳම විසඳුමයි, එය ඇමතුම්කරුවන්ට හැඹිලි බස්ටර් එක් කිරීමට වඩා තරමක් අපහසු වුවද.


1
බොහෝ තත්වයන් සමඟ මම ඔබ සමඟ එකඟ වන අතරම, මෙම ගැටලුවට සැබෑ විසඳුම වන්නේ ඇපල් විසින් HTTP නිවැරදිව ක්‍රියාත්මක කිරීමයි. මෙය මනසේ තබාගෙන, එම කාලය වන තෙක් හැකි සරලම විසඳුම ක්‍රියාත්මක කිරීම ගැන මම බොහෝ සංවර්ධකයින්ට දොස් නොකියමි. මට නම්, jquery ක්‍රියාත්මක කිරීම වෙනස් කිරීම සරලම විසඳුමක් වූ අතර එය එක් සංස්කරණයක් කිරීමට සහ මගේ මුළු වෙබ් අඩවිය සඳහාම ක්‍රියාකාරී බව විශ්වාස කිරීමට මට ඉඩ සලසයි.
සෑම් ෂයිල්ස්

1

භාවිතා කරන අයට 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

$ .AjaxSetup සංයෝජනයක් භාවිතා කිරීමෙන් සහ මගේ පෝස්ට් එකේ යූආර්එල් වෙත කාලරාමුව එක් කිරීමෙන් (පශ්චාත් පරාමිතීන් / ශරීරයට නොවේ) මගේ ගැටලුව විසඳීමට මට හැකි විය. මෙය පෙර පිළිතුරු වල නිර්දේශ මත පදනම් වේ

$(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&time='+n,
            data: data,
            success: function(results){
                if(results.success) {
                    window.location = 'app.cfm';
                } else {
                    console.log(results);
                    alert('login failed');
                }
            }
        });
    });
});

1

මම හිතන්නේ ඔබ දැනටමත් ඔබේ ගැටලුව විසඳා ඇති නමුත් වෙබ් හැඹිලිය පිළිබඳ අදහසක් බෙදා ගැනීමට මට ඉඩ දෙන්න.

ඔබ භාවිතා කරන සෑම භාෂාවකින්ම, සේවාදායක පාර්ශවයේ, සේවාදායකයාගේ පැත්තෙන් ඔබට බොහෝ ශීර්ෂයන් එක් කළ හැකි බව සත්‍යයකි, වෙබ් හැඹිලි වළක්වා ගැනීම සඳහා ඔබට තවත් බොහෝ උපක්‍රම භාවිතා කළ හැකිය, නමුත් සේවාදායකයා ඔබේ සේවාදායකයට සම්බන්ධ වන්නේ කොතැනින්දැයි ඔබට කිසි විටෙකත් දැනගත නොහැකි බව සැමවිටම සිතන්න, ඔහු දැල්ලන් හෝ වෙනත් හැඹිලි නිෂ්පාදන භාවිතා කරන හෝටල් “හොට්-ස්පොට්” සම්බන්ධතාවයක් භාවිතා කරන්නේ දැයි ඔබ දන්නේ නැත.

පරිශීලකයන් ආදිය ඔහුගේ සැබෑ තත්ත්වය සැඟවීමට ප්රොක්සි භාවිතා කරන්නේ නම් ... මේ සැබෑ භාවිතා නොකරන නම් වැලැක්විමට කල ගබඩා කිරීමට එකම මාර්ගය ද ඉල්ලීම දී විකරණය කොට.

උදාහරණයක් වශයෙන්:

/ajax_helper.php?ts=3211321456

එවිට ඔබ සමත් විය යුතු සෑම හැඹිලි කළමනාකරුවෙකුම එකම URL එක හැඹිලි ගබඩාවේ සොයා නොගත් අතර පිටු අන්තර්ගතය නැවත බාගත කරන්න.


පැරණි පිළිතුර, නමුත් මගේ ශත දෙක: මෙය සාමාන්‍යයෙන් හොඳ උපදෙස් සහ බොහෝ දක්ෂ වෙබ් සංවර්ධකයින් විසින් වටහාගෙන ඇත, නමුත් jQuery හි නිශ්චිත අවස්ථාවෙහිදී, ඔබ $.ajaxවිසින් විකල්පයක් සකසා ඇත්නම්, {cache:false}jQuery විසින්ම ස්වයංක්‍රීයව හැඹිලි කඩාවැටීමක් එකතු කරනු ඇත තිරය ​​පිටුපස ඔබ වෙන කිසිවක් කිරීමට අවශ්‍ය නොවී.
Giacomo1968

0

යෙදුම මත පදනම්ව ඔබට දැන් iOS 6 හි සෆාරි> උසස්> වෙබ් පරීක්ෂක භාවිතා කර ගැටළුව නිරාකරණය කරගත හැකිය.

මැක්හි දුරකථනය සෆාරි වෙත සම්බන්ධ කර වෙබ් යෙදුමට වෙඩි තැබීමට සංවර්ධක මෙනුව භාවිතා කරන්න.

වෙබ් දර්ශනයක් භාවිතා කරමින් යෙදුමට විශේෂිත වූව ඇතුළුව, iOS6 වෙත යාවත්කාලීන කිරීමෙන් පසු iPhone හි වෙබ් අඩවි දත්ත ඉවත් කරන්න. එක් යෙදුමකට පමණක් ගැටළුවක් ඇති අතර මෙය IOS6 බීටා පරීක්‍ෂණය අතරතුරදී විසඳා ඇත, එතැන් සිට සැබෑ ගැටළු නොමැත.

ඔබට ඔබගේ යෙදුම දෙස බැලීමට අවශ්‍ය විය හැකිය, අභිරුචි යෙදුමක වෙබ් දර්ශනයක තිබේ නම් NSURLCache පරීක්ෂා කරන්න.

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

ඔබගේ ගැටලුවේ සත්‍ය ස්වභාවය, ක්‍රියාත්මක කිරීම යනාදිය මත පදනම්ව මම අනුමාන කරමි.

Ref: a .ajax ඇමතුම්


මෙය මුල් ප්‍රශ්නයට directly ජුව ආමන්ත්‍රණය නොකරන අතර, සාමාන්‍යයෙන් උපාංගවල ගැටළු නිරාකරණය කර ගැනීමට හැකිවීම සඳහා එය ඉතා ප්‍රයෝජනවත් තොරතුරු වේ, එබැවින් මම එය ඉහළ ඡන්දය ප්‍රකාශ කරමි.
ක්‍රිස් ගයිසිං

0

එය ක්‍රියාත්මක වන්නේ ඇයිද යන්න පිළිබඳව මට කුතුහලයක් ඇති කරන එක් ක්‍රියාමාර්ගයක් මට හමු විය. ASP.NET වෙබ් සේවාව පිළිබඳ ටඩෙජ්ගේ පිළිතුර කියවීමට පෙර, මම උත්සාහ කළේ වැඩ කළ හැකි යමක් ඉදිරිපත් කිරීමට ය.

එය හොඳ විසඳුමක් යැයි මම නොකියමි, නමුත් මට එය මෙහි ලේඛනගත කිරීමට අවශ්‍ය විය.

ප්‍රධාන පිටුව: ජාවාස්ක්‍රිප්ට් ශ්‍රිතයක්, චෙක්ස්ටැටස් () ඇතුළත් වේ. මෙම ක්‍රමය මඟින් html අන්තර්ගතය යාවත්කාලීන කිරීම සඳහා jQuery AJAX ඇමතුමක් භාවිතා කරන තවත් ක්‍රමයක් අමතයි. චෙක්ස්ටැටස් () ඇමතීමට මම setInterval භාවිතා කළෙමි. ඇත්ත වශයෙන්ම, මම හැඹිලි ගැටලුවට දිව ගියෙමි.

විසඳුම: යාවත්කාලීනය ඇමතීමට වෙනත් පිටුවක් භාවිතා කරන්න.

ප්‍රධාන පිටුවේ, මම බූලියන් විචල්‍යයක්, runUpdate, සහ බොඩි ටැගයට පහත සඳහන් දෑ ඇතුළත් කළෙමි:

<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>

එබැවින්, ප්‍රධාන පිටුවෙන් චෙක්ස්ටැටස් () කැඳවනු ලැබුවහොත්, මට හැඹිලි අන්තර්ගතය ලැබේ. මම ළමා පිටුවෙන් චෙක්ස්ටැටස් අමතන්නේ නම්, මට යාවත්කාලීන අන්තර්ගතය ලැබේ.


0

මගේ පිවිසුම් සහ ලියාපදිංචි වීමේ පිටු ෆයර්ෆොක්ස්, අයිඊ සහ ක්‍රෝම් හි චමත්කාරයක් මෙන් ක්‍රියා කරන අතර ... මම අයිඑෆ් සහ ඕඑස්එක්ස් සඳහා සෆාරි හි මෙම ගැටලුව සමඟ පොරබදමින් සිටියෙමි, මාස කිහිපයකට පෙර මම SO හි ක්‍රියාකාරීත්වයක් සොයා ගතිමි.

<body onunload="">

හෝ javascript හරහා

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

මෙය තරමක් කැත දෙයක් නමුත් ටික වේලාවක් වැඩ කරයි.

හේතුව මම නොදනිමි, නමුත් onunloadසෆාරි හි පිටුව හැඹිලිගත නොවූ සිදුවීම වෙත ආපසු යාම .


0

පැරණි අයිෆෝන් සහ අයිපෑඩ්, iOS අනුවාද 9 සහ 10 ධාවනය කරමින් විටින් විට ව්‍යාජ හිස් අජැක්ස් ප්‍රති results ල ලබා දෙන බව අපට පෙනී ගියේය, සමහර විට ඇපල් විසින් සීපීයූ වේගය අඩු කිරීම නිසා විය හැකිය. හිස් ප්‍රති result ලය ලබා දෙන විට, iOS සේවාදායකය අමතන්නේ නැත, හැඹිලියෙන් ප්‍රති result ලයක් ලබා දෙන්නාක් මෙන්. AJAX ඇමතුම් වලින් දළ වශයෙන් 10% සිට 30% දක්වා සංඛ්‍යාත පුළුල් ලෙස වෙනස් වේ.

විසඳුම විශ්වාස කිරීමට අපහසුය. 1s රැඳී සිට නැවත අමතන්න. අපගේ පරීක්ෂණයේදී, මෙතෙක් අවශ්‍ය වූයේ එක් පුනරාවර්තනයක් පමණි, නමුත් අපි 4 වතාවක් ඇමතීමට කේතය ලිව්වෙමු. 1s රැඳී සිටීම අවශ්‍ය දැයි අපට විශ්වාස නැත, නමුත් නැවත නැවත ඇමතුම් පුපුරා යාමෙන් අපගේ සේවාදායකයට බරක් පැටවීමේ අවදානමක් අපට අවශ්‍ය නොවීය.

විවිධ AJAX ඇමතුම් දෙකකින්, විවිධ දත්ත සහිත විවිධ API ගොනු ඇමතීමෙන් ගැටළුව ඇති බව අපට පෙනී ගියේය. නමුත් ඕනෑම AJAX ඇමතුමකින් එය සිදුවිය හැකි යැයි මම සිතමි. අපි සෑම AJAX ප්‍රති result ලයක්ම පරික්ෂා නොකරන නිසාත්, පැරණි උපාංගවල සෑම ඇමතුමක්ම කිහිප වතාවක් පරීක්ෂා නොකරන නිසාත් අපි නොදනිමු.

AJAX ඇමතුම් දෙකම භාවිතා කළේ: POST, Asynchronously = true, setRequestHeader = ('අන්තර්ගතයේ වර්ගය', 'යෙදුම / x-www-form-urlencoded')

ගැටළුව සිදු වූ විට, සාමාන්‍යයෙන් සිදුවන්නේ එක් අජැක්ස් ඇමතුමක් පමණි. එබැවින් එය AJAX ඇමතුම් අතිච්ඡාදනය වීම නිසා නොවේ. සමහර විට ගැටළුව සිදුවන්නේ උපාංගය කාර්යබහුල වන විට, නමුත් සමහර විට එසේ නොවේ, සහ DevTools නොමැතිව එම අවස්ථාවේ සිදුවන්නේ කුමක්දැයි අපි නොදනිමු.

iOS 13 මෙය නොකරයි, ක්‍රෝම් හෝ ෆයර්ෆොක්ස් ද නොකරයි. IOS 11 හෝ 12 ධාවනය වන පරීක්ෂණ උපකරණ අප සතුව නොමැත. සමහර විට වෙනත් කෙනෙකුට ඒවා පරීක්ෂා කළ හැකිද?

මම මෙය මෙහි සඳහන් කරන්නේ මෙම ගැටළුව සෙවීමේදී මෙම ප්‍රශ්නය ඉහළම ගූගල් ප්‍රති result ලය වන බැවිනි.


-1

එය ASP.NET සමඟ වැඩ කළේ IIS හි pragma:no-cacheශීර්ෂකය එකතු කිරීමෙන් පසුව පමණි . ප්‍රමාණවත් නොවීය.Cache-Control: no-cache


-2

ශ්‍රිත අත්සන මේ වගේ දෙයක් ලෙස වෙනස් කිරීමට මම යෝජනා කරමි:

getNewRecordID (intRecordType, strTimestamp) ඉන්පසු සෑම විටම ටයිම්ස්ටැම්ප් පරාමිතියකින් සමත් වී සේවාදායකයේ පැත්තෙන් එම අගය ඉවතලන්න. මෙය ගැටළුව වටා ක්‍රියාත්මක වේ.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.