ইন্টারনেট এক্সপ্লোরারে ক্যাচিং থেকে কোনও jQuery অ্যাজাক্স অনুরোধকে কীভাবে প্রতিরোধ করবেন?


275

কীভাবে আমি কোনও জিকোয়ারি অ্যাজাক্স অনুরোধটিকে ইন্টারনেট এক্সপ্লোরারে ক্যাচিং থেকে আটকাতে পারি?


1
জিইটি-র পরিবর্তে পোষ্ট ব্যবহার করা ক্যাচিং প্রতিরোধ করে। stackoverflow.com/questions/6216234/disable-ajax-caching
প্রশান্ত গুপ্ত

8
আপনি এজ্যাক্সের জন্য পোষ্ট অনুরোধগুলি ব্যবহার করেন তবে ওয়াইস্লো এবং ক্রোম দেব সরঞ্জামগুলি আপনাকে সতর্ক করবে - সাধারণত আপনি পোস্ট করার প্রয়োজন না হলে সাধারণত GET পছন্দসই পদ্ধতি হওয়া উচিত।
পাভেল ক্রাকওইয়াক

আপনার উত্তরটি এখানে:
আইইতে

উত্তর:


524

আপনি বিশ্বব্যাপী ব্যবহার করে ক্যাশে অক্ষম করতে পারেন $.ajaxSetup(), উদাহরণস্বরূপ:

$.ajaxSetup({ cache: false });

অনুরোধটি করার সময় এটি ক্যোরিস্ট্রিংয়ের একটি টাইমস্ট্যাম্প যুক্ত করে। কোনও নির্দিষ্ট $.ajax()কলের জন্য ক্যাশে বন্ধ করতে , cache: falseএটি স্থানীয়ভাবে এটি সেট করুন:

$.ajax({
  cache: false,
  //other options...
});

2
আশা করি আমি এই বিশ্বব্যাপী সেটআপ আইটেমটি আগে দেখতে পেতাম। মাত্র কয়েক ডজন ব্যক্তিগত কল আপডেট করা থেকে আমাকে বাঁচিয়েছে।
জেমস স্কেম্প

2
আমি জানি এটি একটি পুরানো উত্তর, কেবল ভাবছেন যে এটি কলগুলি (আজাক্স, গেট এবং পোস্ট) এর মতো সমস্ত এজাক্সকে প্রভাবিত করে বা কেবল নির্দিষ্ট এজাক্স কলগুলিতে?
গলদা

6
@ লম্পি, jQuery.ajax () ডকুমেন্টেশন অনুসারে , cache: falseকেবলমাত্র হেড এবং জিইটি অনুরোধের সাথে সঠিকভাবে কাজ করবে। এছাড়াও, আপনি যদি jQuery.ajaxSetup () ডকুমেন্টেশন অনুসারে সেট cache: falseকরেন তবে এটি "ভবিষ্যতের অ্যাজাক্স অনুরোধগুলির জন্য ডিফল্ট মান নির্ধারণ করবে।" সুতরাং হ্যাঁ, এটি ভবিষ্যতের সমস্ত শিরোনাম এবং GET AJAX অনুরোধগুলির জন্য ক্যাশে অক্ষম করবে। $.ajaxSetup
জন ওয়াশাম

11
সাবধানতার একটি শব্দ: এটি আপনার URL এ "? _ = কিছুটা" যুক্ত করে umber আপনার পিছনের প্রান্তটি URL- এর ক্যোয়ারী প্যারামিটারগুলিতে "_" উপেক্ষা করতে পারে তা নিশ্চিত করুন।

4
জন্য +1 cache: false। বিশ্বব্যাপী ক্যাচিং বন্ধ করা ওভারকিলের মতো মনে হলেও অনুরোধ অনুযায়ী নিয়ন্ত্রণ থাকা নিখুঁত। ধন্যবাদ
কোডিং হয়ে গেছে

21

যদি আপনি অনন্য পরামিতি সেট করেন, তবে ক্যাশে কাজ করে না, উদাহরণস্বরূপ:

$.ajax({
    url : "my_url",
    data : {
        'uniq_param' : (new Date()).getTime(),
        //other data
    }});

13
এটা কী cacheপরামিতি ইতিমধ্যে লোকচক্ষুর অন্তরালে আছে।
জোসে রুই সান্টোস

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

@ ব্লাডিফাইস্ট আপনি মনে করছেন আমার মতো একই সমস্যা হয়েছে। আপনি কি জানেন যে আইই কে ক্যাচিং বন্ধ করতে ডেটা পরিবর্তন করা ছাড়াও অন্য বিকল্প রয়েছে? আমি বলার কারণ হ'ল আমার অনুরোধগুলি আসলে 'ডেটা' ব্যবহার করে না এবং সমস্ত ডেটা ইউআরএল সহ যায় goes
বদ্রি

1
প্রকৃতপক্ষে, অবশ্যই এই তথ্যটি - api.jquery.com/jquery.ajax ক্যাশে থেকে এই তথ্য অনুসারে পর্দার পিছনে করা উচিত (ডিফল্ট: সত্য, ডেটা টাইপ 'স্ক্রিপ্ট' এবং 'jsonp' এর জন্য মিথ্যা) প্রকার: বুলিয়ান সেট করা থাকলে মিথ্যা হিসাবে, এটি অনুরোধ করা পৃষ্ঠাগুলি ব্রাউজার দ্বারা ক্যাশে না করতে বাধ্য করে। দ্রষ্টব্য: ক্যাশেটিকে মিথ্যাতে সেট করা কেবলমাত্র HEAD এবং GET অনুরোধের সাথে সঠিকভাবে কাজ করবে। এটি জিইটি প্যারামিটারগুলিতে "_ = {টাইমস্ট্যাম্প}" যুক্ত করে কাজ করে।
বদ্রি

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

12
Cache-Control: no-cache, no-store

এই দুটি শিরোলেখের মানগুলি আইই এবং ফায়ারফক্স উভয়ের জন্য প্রয়োজনীয় প্রভাব পেতে একত্রিত করা যেতে পারে


12
সমস্যাটি হ'ল আইই সর্বদা এটি শোনেন না, দুর্ভাগ্যক্রমে :)
নিক ক্র্যাভার

1
@ নিক, এটা কি নিশ্চিত? আমি এই ক্যাশে-নিয়ন্ত্রণ পরীক্ষা করিনি। জ্যাকারি অ্যাজাক্স চচে কি সমস্ত ব্রাউজারে কাজ করা হয়?

7
এটি সমস্ত ব্রাউজারগুলিতে কাজ করা উচিত , হ্যাঁ ... তবে কখনও কখনও আইই কেবল জিনিসগুলির বাইরে নরকে ক্যাশে করতে পছন্দ করে
নিক ক্র্যাভার

@ নিক - আমি এজাক্স ক্যাশেটি মিথ্যাতে সেট করে দিয়েছি B তবে এজাক্স সাফল্যের বার্তা আইই এবং এফএফ তে পায় নি। আপনি আমার কোড যাচাই করতে পারেন? আমার কোডটি কি ভুল? ধন্যবাদ var ajaxfile = বেস + "ইনডেক্স.এফপি / এমএসসি / পপআপ_ভিউ /" + আপত্তি + "/" + আইডি + "/" + নো_ট্যাব; aj। এইচটিএমএল (msg);}});
সাবু

আমি সবেমাত্র নিশ্চিত করেছি যে আইই 11 এই হেডারটিকে উপেক্ষা করে। ক্রোম একটি সিওআরএস ত্রুটিও ছুঁড়েছে।
লেনিন

5

এখানে একটি উত্তর প্রস্তাব:

http://www.greenvilleweb.us/how-to-web-design/problem-with-ie-9-caching-ajax-get-request/

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

লিঙ্কটি দেখুন, এটি ভালভাবে ব্যাখ্যা করা হয়েছে।


13
এটা কী cacheপরামিতি ইতিমধ্যে লোকচক্ষুর অন্তরালে আছে।
জোসে রুই সান্টোস

1

আপনি এটি এর মতো সংজ্ঞা দিতে পারেন:

let table = $('.datatable-sales').DataTable({
        processing: true,
        responsive: true,
        serverSide: true,
        ajax: {
            url: "<?php echo site_url("your url"); ?>",
            cache: false,
            type: "POST",
            data: {
                <?php echo your api; ?>,
            }
        }

বা এই মত:

$.get({url: <?php echo json_encode(site_url('your api'))?>, cache: false})

আশা করি এটা সাহায্য করবে


-4

এটি একটি পুরানো পোস্ট, তবে আইই যদি আপনাকে সমস্যা দিচ্ছে। আপনার জিইটি অনুরোধগুলিকে পোস্টে পরিবর্তন করুন এবং আইই আর এগুলি ক্যাশে করবে না।

আমি এটিকে খুব শক্তভাবে আবিষ্কার করতে অনেক বেশি সময় ব্যয় করেছি। আশা করি এটা সাহায্য করবে.


আমার মনে হয় না আপনি HTTP ক্রিয়াগুলি অপব্যবহার করা উচিত। cache:falseকেস-বাই-কেস ভিত্তিতে সেটিংস হ'ল উপায়।
tommybond
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.