আইওএস 6-এ সাফারি কি ক্যাচিং aj .জ্যাক্স ফলাফল?


1072

আইওএস 6 এ আপগ্রেড হওয়ার পরে, আমরা সাফারির ওয়েব ভিউকে ক্যাশিং $.ajaxকলগুলির স্বাধীনতা নিতে দেখছি । এটি একটি ফোনগ্যাপ অ্যাপ্লিকেশনের প্রসঙ্গে তাই এটি সাফারি ওয়েবভিউ ব্যবহার করছে। আমাদের $.ajaxকলগুলি POSTপদ্ধতি এবং আমাদের ক্যাশেটি মিথ্যাতে সেট করা হয়েছে {cache:false}, তবে এখনও এটি ঘটছে happening আমরা TimeStampশিরোনামগুলিতে ম্যানুয়ালি একটি যুক্ত করার চেষ্টা করেছি কিন্তু এটি কার্যকর হয়নি।

আমরা আরও গবেষণা করে দেখেছি যে সাফারি কেবলমাত্র ওয়েব পরিষেবাদির ক্যাশেড ফলাফলগুলি ফিরিয়ে দিচ্ছে যা একটি ফাংশন স্বাক্ষর যা স্থির এবং কল থেকে কল পরিবর্তিত হয় না। উদাহরণস্বরূপ, এমন কোনও ফাংশন কল্পনা করুন যার নাম:

getNewRecordID(intRecordType)

এই ফাংশনটি একই বারবার একই ইনপুট পরামিতিগুলি গ্রহণ করে তবে এটি যে ডেটা দেয় তা প্রতিবার পৃথক হওয়া উচিত।

আইওএস 6 টি জিপ করার জন্য অ্যাপলের তাড়াহুড়োয় অবশ্যই আবশ্যকভাবে তারা ক্যাশে সেটিংস দিয়ে খুব খুশি হয়েছিল। আইওএস 6 এ অন্য কেউ এই আচরণটি দেখেছেন? যদি তা হয় তবে এর কারণ কি?


আমরা যে কার্যকার্যটি খুঁজে পেয়েছি তা হ'ল ফাংশনের স্বাক্ষরটিকে এই জাতীয় কিছু হিসাবে সংশোধন করা:

getNewRecordID(intRecordType, strTimestamp)

এবং তারপরে সর্বদা TimeStampপাশাপাশি একটি প্যারামিটারে পাস করুন এবং সার্ভারের পাশের মানটি বাতিল করুন। এটি ইস্যুটি নিয়ে কাজ করে। আমি আশা করি এটি অন্য কিছু দরিদ্র আত্মাকে সাহায্য করবে যারা এই ইস্যুতে আমার মতো 15 ঘন্টা ব্যয় করে!


190
এটি একেবারে মর্মস্পর্শী। আমরা কীভাবে কিছু কাজ বন্ধ করে দিয়েছি তা চেষ্টা করার জন্য আমরা কয়েক ঘন্টা ব্যয় করেছি। আমাদের এজ্যাক্স লগইন যা একটি পোষ্ট করে (এবং ক্যাচিং প্রতিরোধের জন্য শিরোলেখ রয়েছে) সাফারি দ্বারা ক্যাশে হচ্ছে তাই এটি ঠিক একই জেএসএনকে ফিরিয়ে দেয় যা এটি সার্ভার চেষ্টা না করেই শেষ বার করেছিল ... অবিশ্বাস্য! আমাদের একটি ফিক্স হ্যাক করতে হবে, তবে আপনার কখনই কোনও পোষ্ট ক্যাশে করা উচিত নয়, এটি পাগল।
কিয়ারান

16
প্রশ্নের আপডেটের পরিবর্তে উত্তর হিসাবে আপনার সমাধান পোস্ট করুন।
ক্রিসএফ

50
পোষ্ট অনুরোধগুলি আদর্শহীন, যার অর্থ প্রতিক্রিয়া শিরোনামগুলির মাধ্যমে প্রতিক্রিয়াটি সুনির্দিষ্টভাবে করার পরামর্শ না দেওয়া পর্যন্ত তাদের ক্যাশে করা উচিত নয় ।
জেমস এম গ্রিন

6
এটিকে ঠিক করতে অ্যাপলকে পেতে bugreport.apple.com এ একটি বাগ ফাইল করুন । আমিও তাই করেছি।
ম্যাথিয়াস বাইনেন্স

11
মার্ক নটিংহাম (আইইটিএফ এইচটিটিপিবিস ওয়ার্কিং গ্রুপের চেয়ারম্যান) আজকে এই সম্পর্কে একটি আকর্ষণীয় ব্লগ পোস্ট লিখেছেন: mnot.net/blog/2012/09/24/casing_POST
ব্রিজি

উত্তর:


447

কিছুটা তদন্তের পরে, দেখা যাচ্ছে যে আইওএস 6-এ সাফারি এমন পোষ্টগুলিকে ক্যাশে করবে যেগুলির কোনও ক্যাশে-নিয়ন্ত্রণ শিরোনাম বা এমনকি "ক্যাশে-নিয়ন্ত্রণ: সর্বোচ্চ-বয়স = 0" নেই।

পরিষেবা কলের শেষে র্যান্ডম ক্যোরিস্ট্রিংগুলি হ্যাক না করে বিশ্বব্যাপী এই ক্যাচিংয়ের ঘটনাটি ঘটতে বাধা দেওয়ার একমাত্র উপায় হ'ল "ক্যাশে-নিয়ন্ত্রণ: নো-ক্যাশে" সেট করা।

তাই:

  • কোনও ক্যাশে-নিয়ন্ত্রণ বা মেয়াদ শেষ হওয়ার শিরোনাম নেই = iOS6 সাফারি ক্যাশে করবে
  • ক্যাশে-নিয়ন্ত্রণ সর্বোচ্চ-বয়স = 0 এবং তাত্ক্ষণিকভাবে মেয়াদ শেষ হবে = iOS6 সাফারি ক্যাশে করবে ari
  • ক্যাশে-নিয়ন্ত্রণ: নো-ক্যাশে = iOS6 সাফারি ক্যাশে করবে না

আমি সন্দেহ করি যে অ্যাপল পোষ্ট সম্পর্কে 9.5 সেকশনের এইচটিটিপি স্পেক থেকে এর সুবিধা নিচ্ছে:

এই পদ্ধতির প্রতিক্রিয়াগুলি ক্যাশেযোগ্য নয়, যদি না প্রতিক্রিয়াটিতে উপযুক্ত ক্যাশে-নিয়ন্ত্রণ অন্তর্ভুক্ত থাকে বা হেডার ক্ষেত্রের মেয়াদ শেষ হয়। যাইহোক, 303 (অন্যান্য দেখুন) প্রতিক্রিয়া ব্যবহারযোগ্য এজেন্টকে ক্যাশেযোগ্য সংস্থান পুনরুদ্ধার করতে পরিচালিত করতে ব্যবহার করা যেতে পারে।

সুতরাং তত্ত্বের ক্ষেত্রে আপনি পোস্ট প্রতিক্রিয়াগুলি ক্যাশে করতে পারেন ... কে জানত। তবে অন্য কোনও ব্রাউজার প্রস্তুতকারক এখনও অবধি ভাবেনি যে এটি এখন পর্যন্ত ভাল ধারণা হবে। যখন কোনও ক্যাশে-নিয়ন্ত্রণ বা মেয়াদ শেষ হওয়ার শিরোনাম সেট করা হয় না তখন কেবল ক্যাচিংয়ের জন্য এটি অ্যাকাউন্টে আসে না some সুতরাং এটি একটি বাগ হতে হবে।

নীচে আমি আমার অ্যাপিচি কনফিগারেশনের ডান বিটটিতে আমার পুরো API টি লক্ষ্যবস্তুতে ব্যবহার করি কারণ এটি ঘটে গেলে আমি আসলে কিছুই ক্যাশে করতে চাই না, এমনকি পাই। আমি যা জানি না তা হ'ল কীভাবে এটি কেবল পোস্টের জন্য সেট করা যায়।

Header set Cache-Control "no-cache"

আপডেট: সবেমাত্র লক্ষ্য করেছি যে আমি পোষ্টটি একই রকম হলেই এটি চিহ্নিত করতে পারি নি, তাই পোষ্টের কোনও ডেটা বা URL পরিবর্তন করুন এবং আপনি ভাল আছেন। সুতরাং আপনি অন্য কোথাও উল্লিখিত হিসাবে কেবল URL এ কিছু র্যান্ডম ডেটা বা কিছুটা পোষ্ট ডেটা যুক্ত করতে পারেন।

আপডেট: আপনি যদি আপাচে এইভাবে চান তবে আপনি "নো-ক্যাশে" কেবলমাত্র পোষ্টগুলিতে সীমাবদ্ধ করতে পারেন:

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

7
আমি দেখতে পাচ্ছি অ্যাপল এটি কোথায় নিয়ে যাচ্ছে, তবে আমাদের প্রতিক্রিয়াগুলিতে কোনও ক্যাশে-নিয়ন্ত্রণ বা মেয়াদ উত্তীর্ণ হওয়া শিরোনাম অন্তর্ভুক্ত না হওয়া সত্ত্বেও আমরা পোষ্ট অনুরোধগুলির ক্যাশেড প্রতিক্রিয়াগুলি দেখছি। এই উদাহরণটি কি iOS6 কে ক্যাশে করা উচিত নয় এবং প্রতিটি অনুরোধ পাঠানো উচিত। এটা হচ্ছে না।
কঙ্গো_ভি

138
আপনি উদ্ধৃত HTTP অনুচ্ছেদের অংশটি আইওএস 6 এর ক্যাচিং আচরণকে ন্যায়সঙ্গত করে না। ডিফল্ট আচরণটি পোষ্ট প্রতিক্রিয়াগুলি (যেমন "" ক্যাশে-নিয়ন্ত্রণ "শিরোনামটি সংজ্ঞায়িত না করা হয়) ক্যাশে না করা উচিত। আচরণটি অনুমানটিকে লঙ্ঘন করে এবং একটি বাগ হিসাবে বিবেচনা করা উচিত। এক্সএমএল / জসসন এপিআই ওয়েব পরিষেবাদি তৈরি করা যে কোনও ব্যক্তিকে এই সমস্যাটি নিয়ে কাজ করার জন্য তাদের পোস্ট প্রতিক্রিয়াগুলি "ক্যাশে-নিয়ন্ত্রণ: নো-ক্যাশে" দিয়ে সাজাতে হবে।
ডেভিড এইচ

39
পোষ্ট অনুরোধগুলি আদর্শহীন, যার অর্থ প্রতিক্রিয়া শিরোনামগুলির মাধ্যমে প্রতিক্রিয়াটি সুনির্দিষ্টভাবে করার পরামর্শ না দেওয়া পর্যন্ত তাদের ক্যাশে করা উচিত নয় ।
জেমস এম গ্রিন

4
ডেভিড যেমন বলেছেন, এটি আপনার উদ্ধৃত বাক্যটির স্পষ্ট লঙ্ঘন। যদি কোনও "ক্যাশে-নিয়ন্ত্রণ বা হেডার ক্ষেত্রের মেয়াদ শেষ হয়" না থাকে তবে যথাযথ এ জাতীয় শিরোনাম অবশ্যই অন্তর্ভুক্ত নয়। তবুও আপনার নিজস্ব তদন্ত এটিকে সেই দৃশ্যে ক্যাশে দেয়। আপনার উত্তর সম্পাদনা করুন।
ম্যাথু ফ্ল্যাশেন

3
কেউ কি জানেন যে কোনও ডিভাইসে ফলাফলটি কতদিন ক্যাশে থাকে? আমি সাফারি মেরে এবং আমার ফোনটি পুনরায় চালু করার চেষ্টা করেছি, তবে এটি এখনও ক্যাশেড। আমি জানি এটি ব্রাউজারের ক্যাশে সাফ করার সাথে কাজ করে তবে আমি ভাবছি যে ব্যবহারকারীদের একবারে সমস্যাটি শেষ হয়ে যাওয়ার আগে এটি কতক্ষণ সময় নেবে। প্রত্যেকে তাদের ক্যাশে সাফ করার কথা ভাববে না ...
ড্যানিয়েল হলকভিস্ট

146

আমি আশা করি এটি অন্য বিকাশকারীদের এই প্রাচীরের বিরুদ্ধে মাথা ঠেকানো কাজে লাগতে পারে। আমি দেখতে পেয়েছি যে নীচের যে কোনওটি আইওএস 6 এ সাফারিটিকে পোষ্টের প্রতিক্রিয়াটি ক্যাচ করতে বাধা দেয়:

  • অনুরোধ শিরোনামগুলিতে [ক্যাশে-নিয়ন্ত্রণ: নো-ক্যাশে] যুক্ত করা হচ্ছে
  • বর্তমান সময়ের মতো একটি পরিবর্তনশীল URL প্যারামিটার যুক্ত করা
  • প্রতিক্রিয়া শিরোনামে [প্রগমা: নো-ক্যাশে] যুক্ত করা হচ্ছে
  • প্রতিক্রিয়া শিরোনামগুলিতে [ক্যাশে-নিয়ন্ত্রণ: নো-ক্যাশে] যুক্ত করা হচ্ছে

আমার সমাধানটি আমার জাভাস্ক্রিপ্টে নিম্নলিখিত ছিল (আমার সমস্ত এজেএক্স অনুরোধগুলি পোস্ট করা হয়েছে)।

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

আমি আমার সার্ভারের অনেক প্রতিক্রিয়াতে [প্রাগমা: নো-ক্যাশে] শিরোনামটিও যুক্ত করছি।

আপনি যদি উপরের সমাধানটি ব্যবহার করেন তবে অবগত থাকুন যে কোনও aj .ajax () আপনাকে কল করে যা বিশ্বব্যাপী সেট করা থাকে: মিথ্যা $ .ajaxSetup () এ উল্লিখিত সেটিংসটি ব্যবহার করবে না, তাই আপনাকে আবার শিরোনাম যুক্ত করতে হবে।


4
এটি বাগের সঠিক সমাধান। বাগটি হ'ল আইওএস 6 সার্ভারে প্রেরণের পরিবর্তে এর ক্যাশে থেকে পোষ্ট অনুরোধগুলি সরবরাহ করবে। বাগটি এটি নয় যে এটি পোষ্ট অনুরোধগুলির প্রতিক্রিয়াগুলিকে ক্যাশ করে (যা অনুমোদিত)। আপনি যদি এখনও সেই ইউআরআইতে পরবর্তী জিইটি অনুরোধের জন্য ক্যাশে থেকে পুনরুদ্ধার করা পোষ্ট অনুরোধগুলির প্রতিক্রিয়া চান তবে এই সমাধানটি ব্যবহার করুন।
নিকোলাস শ্যাঙ্কস

2
এটি আমার পক্ষে কাজ করে তবে আমি বুঝতে পারি না কীভাবে। আমি ইতিমধ্যে ক্যাশে নির্দিষ্ট করে দিয়েছি: আমার এজাক্সেটআপে মিথ্যা, এবং অনুরোধ শিরোনামগুলির দিকে তাকানো, যা ক্যাশে-নিয়ন্ত্রণ: নো-ক্যাশে এবং প্রাগমা: নো-ক্যাশে - তে সিদ্ধ হয় তবে এটি আইপ্যাডে এখনও ক্যাশে থাকবে। তারপরে আমি যখন শিরোনাম যুক্ত করব: j "ক্যাশে-নিয়ন্ত্রণ": "নো-ক্যাশে"} আজাক্সেটআপে, এটি ক্যাশে-নিয়ন্ত্রণ শিরোনামটিকে "নো-ক্যাশে, নো-ক্যাশে" হতে দ্বিগুণ করে - এবং ক্যাচিং বন্ধ করে দেয়। এখানে কি হচ্ছে?
টম ডাব্লু হল

পুরোপুরি কাজ করে - আপনি অনুরোধটিকে প্যারামিটার হিসাবেও যুক্ত করতে পারেন aj .জ্যাক্স ({প্রকার: 'পোস্ট', শিরোনাম: c 'ক্যাশে-নিয়ন্ত্রণ': 'নো-ক্যাশে'}, ইত্যাদি})
জর্জ ফিলিপোকোস

[প্রগমা: নো-ক্যাশে] কী? প্রাগমা কী কী জন্য ব্যবহৃত হয়?
জাকদানিস

আমি আরও মনে করি যে এটি অতিরিক্ত প্যারামিটারের সাথে কাজ করার চেয়ে সেরা পন্থা। আমরা এটি কেবলমাত্র যেখানে আমাদের প্রয়োজন সেখানে কলগুলিতে যুক্ত করেছি, যে কলগুলির জন্য সর্বদা একই রকম ফিরে আসে, শেষ ব্যবহারকারীর পক্ষে ক্যাচিং সম্ভবত একটি ভাল জিনিস।
জার্মানিভি

67

আপনার সমস্ত ওয়েব পরিষেবাদির অনুরোধগুলির সহজ সমাধান, ধরে নিলে আপনি 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 প্রিফিল্টার কল সম্পর্কে আরও পড়ুন ।

আপনি যদি jQuery ব্যবহার না করে থাকেন তবে আপনার পছন্দের লাইব্রেরির জন্য ডক্সটি পরীক্ষা করুন। তাদের অনুরূপ কার্যকারিতা থাকতে পারে।


3
এটি আমার পক্ষে কাজ করে না, সার্ভার প্রতিক্রিয়া জানায়: "অবৈধ আদিম জেএসএন: টাইমস্ট্যাম্প" এসপ নেট / আইআইএস 7.৫
আলেকজান্দ্রে

3
aj .জাক্স ({"ক্যাশে": মিথ্যা ...}) সম্পর্কে কী? এটি একটি _ = [টাইমস্ট্যাম্প] যুক্ত হওয়ার সাথে সাথে কী কাজ করবে? (এটি পরীক্ষা করার জন্য আমার কাছে এমন কোনও ডিভাইসের মালিক নেই)
কারসেল

আমি কারসেলের প্রস্তাবিত সমাধানটির সম্পূর্ণ বাস্তবায়ন পোস্ট করেছি। আমার উত্তর নীচে দেখুন।
স্যাম শাইলস

1
@Karussell। সবেমাত্র $ .ajax ({"ক্যাশে": মিথ্যা ... setting) সেট করার চেষ্টা করেছি। এটি iOS6- এ পোস্টের অনুরোধগুলির জন্য সমস্যাটি সমাধান করে না। সম্ভবতঃ কারণ তাদের ডক্স অনুসারে জিকুয়েরি পোষ্ট অনুরোধগুলিকে ক্যাশে করার জন্য কোনও ব্রাউজার যথেষ্ট বোকা নয়। "POST এর সাথে প্রাপ্ত পৃষ্ঠাগুলি কখনই ক্যাশে হয় না, তাই jQuery.ajaxSetup () এ ক্যাশে এবং ifModified বিকল্পগুলি এই অনুরোধগুলির উপর কোনও প্রভাব ফেলবে না।"
ব্রেট হান্না 11

1
এটি কাজ করে না। এটি পোস্ট পরামিতিগুলিকে মার্জ করে না। ডেভের পোস্টটি আরও ভাল সমাধান।
ক্রিস Muench

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

এএসপি.এনইটি ওয়েব সার্ভিস থেকে কোনও ওয়েব অ্যাপ ডেটা পাওয়ার ক্ষেত্রে আমার একই সমস্যা ছিল

এটি আমার পক্ষে কাজ করেছে:

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

2
আপনাকে অনেক ধন্যবাদ! আইফোন কেন অন্য প্ল্যাটফর্মের চেয়ে এত আলাদা অভিনয় করছিল তা জানার চেষ্টা করে আমি পাগল হয়ে যাচ্ছিলাম। এই এএসপি.এনইটি-নির্দিষ্ট সমাধানটি আমাকে এক টন সময় সাশ্রয় করেছে।
মার্ক ব্রিটিংহ্যাম

আইওএস 6 এর জন্য কাজ করেনি আমার উত্তরটি থ্রেডের শেষের দিকে দেখুন
ব্রায়ান ওগডেন

1
অনুগ্রহ!!!! এটি কেবল আইওএস 6 এ প্রয়োগ করার জন্য একটি শর্ত রাখুন, বিষয়বস্তু ক্যাশে যে কোনও অ্যাপ্লিকেশনের পক্ষে অত্যাবশ্যক।
আলেকজান্দ্রে

24

অবশেষে, আমি আমার আপলোড সমস্যার সমাধান করেছি।

জাভাস্ক্রিপ্টে:

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

ইন পিএইচপি :

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

15

আমার নিজস্ব ব্লগ পোস্ট থেকে আইওএস 6.0 ক্যাচিং অ্যাজাক্স পোস্টের অনুরোধগুলি :

কীভাবে এটি ঠিক করবেন: অনুরোধগুলির ক্যাচিং প্রতিরোধের জন্য বিভিন্ন পদ্ধতি রয়েছে। প্রস্তাবিত পদ্ধতিটি নো-ক্যাশে শিরোনাম যুক্ত করছে। এটি এভাবেই করা হয়।

JQuery:

আইওএস 6.0 পরীক্ষা করে দেখুন এবং এজাক্স শিরোনামটি সেট করুন:

$.ajaxSetup({ cache: false });

ZeptoJS:

আইওএস 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");

ক্লায়েন্টে কোনও ডেটা প্রেরণের আগে পৃষ্ঠার শীর্ষে এটি যুক্ত করার বিষয়টি নিশ্চিত করুন।

.NET

Response.Cache.SetNoStore();

অথবা

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

পিএইচপি

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 Ajax পরিবর্তন করে এই সমস্যাটি ঠিক করতে পারেন নিম্নলিখিতটি (1.7.1 হিসাবে) অ্যাজাক্স ফাংশনের শীর্ষে (ফাংশনটি লাইন 7212 থেকে শুরু) দ্বারা ফাংশনটি । এই পরিবর্তনটি সমস্ত পোষ্ট অনুরোধের জন্য jQuery এর অন্তর্নির্মিত অ্যান্টি-ক্যাশে বৈশিষ্ট্য সক্রিয় করবে।

(সম্পূর্ণ স্ক্রিপ্ট এখানে উপলব্ধ http://dl.dropbox.com/u/58016866/jquery-1.7.1.js ।)

7221 লাইনের নীচে sertোকান:

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
প্রিফিল্টার পদ্ধতির সমস্যা হ'ল আপনাকে ফিল্টারটি নিবন্ধিত করতে হবে। আপনার যদি একটি সাধারণ স্ক্রিপ্ট থাকে যা প্রতিটি পৃষ্ঠা লোড হওয়ার পরে চলে, তবে ঠিক আছে, তবে আপনি যদি না হন তবে আপনাকে অজ্যাক্স ব্যবহার করে এমন প্রতিটি পৃষ্ঠার জন্য প্রিফিল্টার সেটআপ করতে হবে। আমি যে দৃশ্যের মুখোমুখি হয়েছিলাম, আমাদের কাছে জিকিউ ফাইলের একটি সাধারণ অবস্থান ছিল যা +++ পৃথক ওয়েব সাইটের জন্য সংস্থান হিসাবে ব্যবহৃত হয়েছিল। এই ত্রুটির কারণে আমরা এক ঘন্টা কয়েক হাজার পাউন্ড হারাচ্ছি এবং আমি যে পদ্ধতির পরামর্শ দিয়েছি তা একটি ফাইল পরিবর্তন করে খুব কম সময়ের মধ্যে সমাধান করতে আমাদের সক্ষম করে। আমি আপনার সাথে অধ্যক্ষের সাথে একমত হই তবে আপনাকে মাঝে মাঝে বাস্তববাদী হতে হবে!
স্যাম শাইলস

এরপরে আপনি এটিকে আবার সেই ফাইলটির শেষে যুক্ত করতে পারেন। ভাল আপনি এটি সমাধান করেছেন, আপনার সংস্থা অবশ্যই আপনার জন্য খুশি হবে।
andlrc

5

জিডাব্লুটিটি-আরপিসি পরিষেবাদির জন্য একটি দ্রুত পরিশ্রম হ'ল এটি সমস্ত দূরবর্তী পদ্ধতিতে যুক্ত করা:

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

আমাদের বেশিরভাগের জিডব্লিউটি মোতায়েনে শত শত রিমোট পদ্ধতি রয়েছে। সমস্ত অনুরোধের জন্য কী সর্বজনীন উপায় ক্যাশে নিয়ন্ত্রণ শিরোনাম সেট করেছে?
dirkoneill

5

এটি বাজ 1nga উত্তরের একটি আপডেট। যেহেতু 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();
  }
});

1
টাইমস্ট্যাম্প যুক্ত করা একটি খারাপ ধারণা, পরিবর্তে ডেভ এর সমাধান চেষ্টা করুন try
নিকোলাস শ্যাঙ্কস

4

হোম অ্যাপ্লিকেশনগুলিকে হোম স্ক্রিনে যুক্ত করার জন্য এই সমস্যাটি সমাধান করার জন্য, শীর্ষস্থানীয় উভয় ভোটের কাজের অনুসরণ করা দরকার। নতুন অনুরোধগুলি এগিয়ে যাওয়ার আগে আটকাতে ওয়েব সার্ভারটি চালু করা দরকার এবং ইতিমধ্যে ক্যাশে যাওয়া অনুরোধগুলির জন্য প্রতিটি পোস্ট অনুরোধে কিছু এলোমেলো ইনপুট যুক্ত করা দরকার। আমার পোস্ট দেখুন:

আইওএস - - হোম স্ক্রিনে যুক্ত ওয়েব অ্যাপের জন্য ক্যাশেড অজ্যাক্স পোস্টের অনুরোধগুলি সাফ করার কোনও উপায় আছে?

সতর্কতা: যে কেউ সার্ভারে ক্যাশিং বন্ধ না করে তাদের অনুরোধগুলিতে টাইমস্ট্যাম্প যুক্ত করে একটি কাজের সমাধান প্রয়োগ করেছে। যদি আপনার অ্যাপ্লিকেশনটিকে হোম স্ক্রিনে যুক্ত করা হয়, তবে প্রতিটি পোস্টের প্রতিক্রিয়া এখন ক্যাশে হবে, সাফারি ক্যাশে সাফ করা এটি সাফ করে না এবং এটির মেয়াদ শেষ হতে পারে বলে মনে হয় না। যদি কারও কাছে এটি সাফ করার উপায় না থাকে তবে এটিকে দেখে মনে হচ্ছে কোনও সম্ভাব্য মেমরি ফাঁস হবে!


সমস্ত প্রতিক্রিয়া ফোনে ফাইল বা মেমরি ক্যাশে করা হবে?
ইডুন

আমার ক্ষেত্রে এমনটা হয়নি। আমি আমার ইউআরএলে টাইম স্ট্যাম্প যুক্ত করেছি (পরামিতিগুলি পোস্ট করে না) এবং সাফারি থেকে ব্রাউজ করার সময় এবং হোম স্ক্রিনে সংরক্ষণ করার সময় উভয়ই ঠিক কাজ করে।
শ্যাডটিডি ডেভেলপার

4

যে কাজগুলি কাজ করে নাআইপ্যাড 4 / আইওএস 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);

ডাউন ভোট কী? এটি গুরুত্বপূর্ণ তথ্য ক্যাশে: মিথ্যা আইপ্যাড 4 / আইওএস 6 এর সাথে কাজ করে না বা // এসপিএন'র কাজ করে না: এইচটিপিপি কনটেক্সট.কন্টার.সেস্পসনেস.ক্যাচ.সেটচ্যাচাবিলিটি (এইচটিটিপিচাচিয়াযোগ্যতা.নো ক্যাশে)
ব্রায়ান ওগডেন

উত্তরোত্তর জন্য: ২০১৩ সালের হিসাবে, $.ajax cache: falseক্যোয়ারী প্যারামিটারের সাথে url _=Date.prototype.getTime()যুক্ত করে, তাই ম্যানুয়ালি টাইমস্ট্যাম্প সংযোজন করার দরকার নেই।
কাউবার্ট

3

এটি জিডব্লিউটি-আরপিসির প্রায় কাজ

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 (pagemethods, webservice, ইত্যাদি)

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

1

অনুরোধটিকে আলাদা দেখতে শক্তিশালী সমাধান হিসাবে দেখানোর জন্য ক্যাশে-বাস্টার প্যারামিটার যুক্ত করার সময়, আমি এর বিরুদ্ধে পরামর্শ দেব, কারণ এটি এমন কোনও অ্যাপ্লিকেশনকে ক্ষতিগ্রস্থ করবে যা প্রকৃত ক্যাচিংয়ের উপর নির্ভর করে। কলকারীদের ক্যাশে বুস্টার যুক্ত করার চেয়ে কিছুটা বেশি কঠিন হলেও, API এর আউটপুটকে সঠিক শিরোনাম তৈরি করা সেরা সম্ভাব্য সমাধান।


1
যদিও আমি বেশিরভাগ পরিস্থিতিতে আপনার সাথে একমত হব, আমি যুক্তি দিয়ে বলব যে এই সমস্যার আসল সমাধান হ'ল অ্যাপল এইচটিটিপি সঠিকভাবে প্রয়োগ করা। এটি মাথায় রেখে, আমি ততদিন পর্যন্ত সহজতম সমাধানটি কার্যকর করার জন্য অনেক বিকাশকারীকে দোষ দেব না। আমার জন্য, jquery বাস্তবায়ন পরিবর্তন করা সহজতম সমাধান ছিল কারণ এটি আমাকে একটি সম্পাদনা করতে এবং আত্মবিশ্বাসের জন্য এটি আমার সম্পূর্ণ সাইটের জন্য সক্রিয় ছিল be
স্যাম শাইলস

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

আমি aj .JaxSetup এর সংমিশ্রণটি ব্যবহার করে এবং আমার পোস্টের 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&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 নিজেই একটি ক্যাশে-বুস্টিং যুক্ত করবে পর্দার পিছনে আপনাকে কখনও আর কিছু করার প্রয়োজন হয় না।
জ্যাকগল্ড

0

অ্যাপের উপর নির্ভর করে আপনি এখন সাফারি> অ্যাডভান্সড> ওয়েব ইন্সপেক্টর ব্যবহার করে আইওএস 6 এ সমস্যাটি গুলি করতে পারেন যাতে এটি এই পরিস্থিতিতে সহায়ক।

ফোনটিকে একটি ম্যাকের সাফারিতে সংযুক্ত করুন তারপরে ওয়েব অ্যাপ্লিকেশন শ্যুট করতে সমস্যায় বিকাশকারী মেনুটি ব্যবহার করুন use

ওয়েব ভিউ ব্যবহার করে অ্যাপের নির্দিষ্ট করে আইওএস 6-এ আপডেট হওয়ার পরে আইফোনটিতে ওয়েবসাইট ডেটা সাফ করুন। আইওএস Bet বিটা পরীক্ষার সময় কেবলমাত্র একটি অ্যাপ্লিকেশানের সমস্যা ছিল এবং এটি সমাধান করেছে, এরপরে কোনও আসল সমস্যা নেই।

আপনার নিজের অ্যাপ্লিকেশনটিও দেখতে হবে, কোনও কাস্টম অ্যাপ্লিকেশনে ওয়েবভিউতে থাকলে এনএসআরএল ক্যাশে দেখুন।

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

আপনার অনুমান, বাস্তবায়ন ইত্যাদির প্রকৃত প্রকৃতির উপর নির্ভর করে আমার ধারণা ..

রেফার: aj .জ্যাক্স কল


যদিও এটি সরাসরি আসল প্রশ্নের সমাধান করে না, সাধারণভাবে অন ডিভাইসগুলির সমস্যা সমাধানে সক্ষম হওয়ার জন্য এটি খুব দরকারী তথ্য, সুতরাং আমি এটিকে ভোট দিয়েছি।
ক্রিস গিজিং

0

আমি এমন একটি কাজের সন্ধান পেয়েছি যা এটি কেন কাজ করে তা সম্পর্কে আমাকে আগ্রহী করে তোলে makes এএসপি.এনইটি ওয়েব পরিষেবা সম্পর্কিত তাদেজের উত্তরটি পড়ার আগে আমি এমন কিছু নিয়ে আসার চেষ্টা করছিলাম যা কাজ করবে।

এবং আমি বলছি না যে এটি একটি ভাল সমাধান, তবে আমি এটি এখানে ডকুমেন্ট করতে চেয়েছিলাম।

প্রধান পৃষ্ঠা: একটি জাভাস্ক্রিপ্ট ফাংশন, চেকস্ট্যাটাস () অন্তর্ভুক্ত। পদ্ধতিটি অন্য পদ্ধতিতে কল করে যা এইচটিএমএল সামগ্রী আপডেট করতে jQuery AJAX কল ব্যবহার করে। আমি চেকস্ট্যাটাস () কল করতে setInterval ব্যবহার করেছি। অবশ্যই আমি ক্যাচিংয়ের সমস্যায় পড়েছিলাম।

সমাধান: আপডেটটি কল করতে অন্য পৃষ্ঠা ব্যবহার করুন।

মূল পৃষ্ঠায়, আমি একটি বুলিয়ান ভেরিয়েবল, রানআপডেট সেট করেছি এবং বডি ট্যাগটিতে নিম্নলিখিতগুলি যুক্ত করেছি:

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

হেল্পার html এর মধ্যে:

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

সুতরাং, যদি চেকস্ট্যাটাসকে () প্রধান পৃষ্ঠা থেকে কল করা হয় তবে আমি ক্যাশেড সামগ্রীটি পাই। আমি যদি চাইল্ড পৃষ্ঠা থেকে চেকস্ট্যাটাস কল করি তবে আমি আপডেট সামগ্রী পেতে পারি।


0

আমার লগইন এবং সাইনআপ পৃষ্ঠাগুলি ফায়ারফক্স, আইই এবং ক্রোমে আকর্ষণীয় কাজ করার সময় ... আমি আইওএস এবং ওএসএক্স-এর জন্য সাফারিতে এই সমস্যাটি নিয়ে লড়াই করে যাচ্ছিলাম, কয়েক মাস আগে আমি এসও-তে একটি কার্যকারিতা পেয়েছি।

<body onunload="">

বা জাভাস্ক্রিপ্ট মাধ্যমে

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

এটি কৃপণজনক জিনিস তবে কিছুক্ষণ কাজ করে।

আমি জানি না কেন, তবে onunloadপৃষ্ঠাটি সাফারিতে ক্যাশে হবে না এমন ইভেন্টে নালায় ফেরা।


0

আমরা দেখতে পেয়েছি যে পুরানো আইফোন এবং আইপ্যাডগুলি, আইওএস সংস্করণ 9 এবং 10 চলছে, মাঝে মধ্যে বগাস ফাঁকা এজেএক্স ফলাফল ফিরে আসে, সম্ভবত অ্যাপলের সিপিইউ গতি ডাউন করার কারণে। ফাঁকা ফলাফল ফেরত দেওয়ার সময়, আইওএস সার্ভারকে কল করে না, যেমন ক্যাশে থেকে ফলাফল ফেরত দেয়। ফ্রিকোয়েন্সি ব্যাপকভাবে পরিবর্তিত হয়, প্রায় 10% থেকে 30% এজেএক্স কলগুলি ফিরে আসে ফাঁকা।

সমাধান বিশ্বাস করা কঠিন। শুধু 1s অপেক্ষা করুন এবং আবার কল করুন। আমাদের পরীক্ষায়, কেবলমাত্র একটি পুনরাবৃত্তি ছিল যা কেবল তখনই প্রয়োজন ছিল, তবে আমরা 4 বার কল করার জন্য কোডটি লিখেছিলাম। আমরা নিশ্চিত না যে 1s অপেক্ষা প্রয়োজন কিনা, তবে আমরা বারবার কল ফেটে আমাদের সার্ভারের বোঝা ঝুঁকি নিতে চাই না।

আমরা দুটি পৃথক এজেএক্স কল দিয়ে বিভিন্ন ডেটা সহ বিভিন্ন এপিআই ফাইলগুলিতে কল করে সমস্যাটি দেখতে পেয়েছি। তবে আমি উদ্বিগ্ন যে কোনও এজেএক্স কল এ ঘটতে পারে। আমরা কেবল জানি না কারণ আমরা প্রতিটি এজেএক্স ফলাফল পরিদর্শন করি না এবং আমরা প্রতিটি কল একাধিক বার পুরানো ডিভাইসে পরীক্ষা করি না।

উভয়ই এজেএক্স কলগুলি ব্যবহার করছিল: POST, Asynchronously = true, setRequestHeader = ('বিষয়বস্তুর ধরণ', 'অ্যাপ্লিকেশন / x-www-form-urlencoded')

যখন সমস্যাটি ঘটে তখন সাধারণত একটি মাত্র এজাক্স কল চলে। সুতরাং এটি AJAX কলগুলি ওভারল্যাপ করার কারণে নয়। কখনও কখনও সমস্যাটি ঘটে যখন ডিভাইসটি ব্যস্ত থাকে তবে কখনও কখনও তা হয় না এবং ডেভটুলগুলি ব্যতীত আমরা আসলে জানি না what's সময়ে কী হচ্ছে।

আইওএস 13 এটি করে না, না ক্রোম বা ফায়ারফক্স। আইওএস 11 বা 12 চলছে এমন কোনও পরীক্ষার ডিভাইস আমাদের কাছে নেই সম্ভবত অন্য কেউ সেগুলি পরীক্ষা করতে পারে?

আমি এখানে এটি উল্লেখ করছি কারণ এই সমস্যাটি অনুসন্ধান করার সময় এই প্রশ্নটি গুগলের সর্বোচ্চ ফলাফল।


-1

এটা তোলে সঙ্গে কাজ ASP.NET শুধুমাত্র যোগ করার পরে pragma:no-cacheহেডার আইআইএসCache-Control: no-cacheযথেষ্ট ছিল না।


-2

আমি ফাংশনের স্বাক্ষরটিকে এরকম কিছু হতে সংশোধন করার জন্য এক প্রস্তাবিত পরামর্শ দিচ্ছি:

getNewRecordID (intRecordType, strTimestamp) এবং তারপরে সর্বদা পাশাপাশি একটি টাইমস্ট্যাম্প প্যারামিটারে পাস করুন এবং সার্ভারের পাশের মানটি বাতিল করুন। এটি ইস্যুটি নিয়ে কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.