AJAX কল ফলাফলের ব্রাউজারের ক্যাচিং প্রতিরোধ করুন


262

দেখে মনে হচ্ছে যদি আমি ব্যবহার করে গতিশীল সামগ্রী লোড করি $.get()তবে ফলাফলটি ব্রাউজারে ক্যাশে হয়েছে ached

কোয়েরি স্ট্রিংয়ে কিছু এলোমেলো স্ট্রিং যুক্ত করা এই সমস্যাটিকে (আমি ব্যবহার করি new Date().toString()) সমাধান করবে বলে মনে হয় তবে এটি হ্যাকের মতো অনুভব করে।

এটি অর্জনের অন্য কোনও উপায় আছে কি? বা, যদি অনন্য স্ট্রিংটি এটি অর্জনের একমাত্র উপায় হয়, তবে কোনও পরামর্শ ছাড়া new Date()?


আপনি $.now()প্রতিটি এবং প্রতিবার (নতুন তারিখ ()। গেটটাইম ()) না করে সংক্ষিপ্ত স্বরলিপিটি ব্যবহার করতে পারেন ।
ডেসসন

1
আপনার প্রশ্নের শিরোনাম একটি বিভ্রান্তিকর। আপনি কি এটির নামকরণ বিবেচনা করতে পারেন?
0112

4
আপনি কি গ্রহণযোগ্য উত্তর হিসাবে অন্য উত্তর বাছাই বিবেচনা করেছেন?
এম 4 এন

উত্তর:


241

আমি ব্যবহার করি new Date().getTime(), যা একই মিলিসেকেন্ডের মধ্যে আপনার একাধিক অনুরোধ না ঘটলে সংঘর্ষগুলি এড়ানো হবে:

$.get('/getdata?_=' + new Date().getTime(), function(data) {
    console.log(data); 
});

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


11
আমি কেবল এটিকে কম করব কারণ পিটার জেয়ের উত্তর হিসাবে jQuery কে এটি করতে দেওয়া পরিষ্কার। আপনার সমাধানটি কাজ করবে, তবে দীর্ঘকাল ধরে রাখা আরও কঠিন।
নিক্লাস ওল্ফ

11
এর কোন অংশটির রক্ষণাবেক্ষণ প্রয়োজন? যখন তুলনা করা হয় jQuery কি করে?
সানি আর গুপ্ত

5
এটা যে মূল্য হতে পারে new Date().getTime()কোডটির এই মত ব্যবহার করা হয় ... var nocache = new Date().getTime(); var path = 'http://hostname.domain.tld/api/somejsonapi/?cache=' + nocache;। এটি নিজে বের করতে কয়েক মিনিট সময় লাগল। অবশ্যই ?cacheকোনও শব্দাবলি হতে পারে যা এপিআই আসলে চায় না।
ডাবলজে

1
+1 এমনকি পিটার জে এর উত্তরটির আরও ভাল পদ্ধতির উত্তর পাওয়া ভুল নয় বা একটি খারাপ উত্তরও নয়। আমি বিশ্বাস করি যে ডিভি তৈরি হয়েছে কারণ আপনার পিটারের উপরে (গ্রহণযোগ্য হিসাবে)। এবং ওপি 2013 এর প্রথম থেকে এসও তে উপস্থিত হয় না
মিশেল আইরেস

1
url = url + (-1 === url.indexOf('?') ? '?' : '&') + "__=" + Number(new Date());

513

নিম্নলিখিত কোনটি ভবিষ্যতের এজেএক্স অনুরোধগুলিকে ক্যাশে যাওয়া থেকে বিরত করবে, আপনি কোন jQuery পদ্ধতি ব্যবহার না করেই (get .get, $ .axax, ইত্যাদি)

$.ajaxSetup({ cache: false });

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

8
প্রকৃতপক্ষে এটি নথির প্রস্তুত কলের মধ্যে থাকা দরকার নেই।
পিটার জে

19
বিশ্বব্যাপী আজাক্স ক্যাচিং অক্ষম করবেন কেন? আমি মনে করি এটি প্রতি কল ভিত্তিতে করা উচিত, যেমন জনাথনের উত্তর যা করে।
সানি আর গুপ্ত

5
আপনার অ্যাপের জন্য যা কিছু কাজ করে। আমি যখনই সমস্ত অ্যাজেএক্স কলগুলির জন্য একেবারে নতুন ডেটা প্রয়োজন তখনই আমি বাণিজ্যিক অ্যাপ্লিকেশনগুলিতে এই পদ্ধতিটি ব্যবহার করে চালিয়ে যাচ্ছি। অন্যদের জন্য, ক্যাশেড ডেটা ঠিক আছে।
পিটার জে

1
লিঙ্কের বিবরণ: ভবিষ্যতের অ্যাজাক্স অনুরোধগুলির জন্য ডিফল্ট মান সেট করুন। এর ব্যবহার বাঞ্ছনীয় নয়।
@webdeveloper

319

JQuery এর get .get () ফলাফলগুলি ক্যাশে করবে। পরিবর্তে

$.get("myurl", myCallback)

আপনার $ .ajax ব্যবহার করা উচিত, যা আপনাকে ক্যাচিং বন্ধ করতে দেয়:

$.ajax({url: "myurl", success: myCallback, cache: false});

62
+1 এটি সঠিক উত্তর। পিটার জেদের বিশ্বব্যাপী ক্যাচিং অক্ষম করার সমাধানটি একটি খারাপ অনুশীলন আইএমও।
সালমান ভন আব্বাস

7
লক্ষ করা গুরুত্বপূর্ণ যে পৃষ্ঠা / অনুরোধের জন্য এটি কেবল "গ্লোবাল"।
পিটার জে

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

1
সঠিক উত্তরের জন্য +1 - ম্যানুয়াল হ্যাকের পরিবর্তে jQuery এর পদ্ধতি ব্যবহার করে প্রতি কল কল ভিত্তিতে ক্যাশে প্রতিরোধ করা।
ব্রেন্ডন হিল

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

24

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

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

কমপক্ষে ক্রোমের পক্ষে কাজ করা ফলাফলটি হ'ল:

$.ajax({
   url: url, 
   headers: {
     'Cache-Control': 'no-cache, no-store, must-revalidate', 
     'Pragma': 'no-cache', 
     'Expires': '0'
   }
});


হতে পারে একটি বোকা প্রশ্ন, কিন্তু আমার এজাক্স চিত্রগুলি ফেরত দিলে, চিত্রগুলি ক্যাশে হবে? বিশাল অ্যামাজন এস 3 অনুরোধ এড়াতে?
মার্সেলো আগিমিভেল

MarceloAgimóvel, এটি আমার বিশ্বাস একটি পৃথক SO প্রশ্ন হতে পারে।
এইডিন

23

অন্য উপায়টি হ'ল কোডটিতে সার্ভারসাইড থেকে কোনও ক্যাশে শিরোনাম সরবরাহ করা যা এজ্যাক্স কলটির প্রতিক্রিয়া তৈরি করে:

response.setHeader( "Pragma", "no-cache" );
response.setHeader( "Cache-Control", "no-cache" );
response.setDateHeader( "Expires", 0 );

17
ত্রুটিপূর্ণ. : ইন্টারনেট, কোন-ক্যাশে শিরোলেখ, XMLHttpRequest- এর কলের জন্য উপেক্ষা করা হয় যেমন এখানে আলোচনা stackoverflow.com/questions/244918/... শুধুমাত্র সমাধান যে আসলে কাজ তারিখসময় (অথবা আমার .ajaxSetup পদ্ধতি) করা হয়।
পিটার জে

আমি স্রেফ আমার স্বাভাবিক কোনও ক্যাশে মন্ত্রটি আটকে রেখেছি, এটি নির্দিষ্টভাবে বলা হয়নি যে এটি আইই নির্দিষ্ট
মাইসুজে

2
এটি সমস্ত ব্রাউজারগুলির জন্য ক্যাচিং বন্ধ করে দেওয়া উচিত: প্রতিক্রিয়া.সেটহিডার ("ক্যাশে-নিয়ন্ত্রণ", "সর্বাধিক বয়স = 0, নো-ক্যাশে, নো-স্টোর, পোস্ট-চেক = 0, প্রাক-চেক = 0");
ক্রিস ব্রোস্কি

13

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

আমি সাধারণত ব্যবহার Math.random()করি তবে তারিখটি ব্যবহার করার ক্ষেত্রে আমি কোনও ভুল দেখতে পাচ্ছি না (আপনার একইভাবে দু'বার একই মান পাওয়ার জন্য এজ্যাক্স অনুরোধ দ্রুত করা উচিত নয়)।


2
ম্যাথ.রেন্ডম () এর সাথে ডেট () .গেটটাইম () একত্রিত করুন এবং আপনার নিরাপদ দিকে থাকা উচিত। পার্শ্ব নোটে, Ext.Ajax এছাড়াও অক্ষম ক্যাচিং নির্দিষ্ট করা হলে getTime () ব্যবহার করে।
ভিভিডোস

12

ডকুমেন্টেশন অনুসরণ: http://api.jquery.com/jquery.ajax/

আপনি এর cacheসাথে সম্পত্তিটি ব্যবহার করতে পারেন :

$.ajax({
    method: "GET",
    url: "/Home/AddProduct?",
    data: { param1: value1, param2: value2},
    cache: false,
    success: function (result) {
        // TODO
    }
});

5

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

অবশ্যই সার্ভারের উপর আপনার নিয়ন্ত্রণ না থাকলে এটি সাহায্য করে না।


5

জিইটি-র পরিবর্তে পোষ্ট অনুরোধ ব্যবহার সম্পর্কে কী ...? (যা আপনার যাইহোক করা উচিত ...)


আমি মনে করি এটি আরও ভাল সমাধান, তবে দুঃখের বিষয় আমি (কোনওভাবে) কেবল জিইটি অনুরোধ করতে পারি। সুতরাং .. এটি এখনই নতুন তারিখ ()। GetTime ()।
সালামান্ডের

দয়া করে আপনার উত্তরে কিছু ব্যাখ্যা যুক্ত করুন যাতে অন্যরা এটি শিখতে পারে - কেন একটি পোষ্ট অনুরোধের প্রয়োজন হবে?
নিকো হায়েস

5

আসল প্রশ্নটি কেন এটি ক্যাশে করা না দরকার this যদি এটি ক্যাশে করা না হয় কারণ এটি সর্বদা পরিবর্তিত হয়, তবে সার্ভারটি সংস্থানটি ক্যাশে না করার জন্য নির্দিষ্ট করা উচিত। যদি এটি কেবল কখনও কখনও পরিবর্তিত হয় (কারণ এটি নির্ভর করে এমন একটি সংস্থান পরিবর্তন করতে পারে), এবং যদি ক্লায়েন্ট কোডটির সম্পর্কে জানার কোনও উপায় থাকে তবে এটি ইউআরএলটিতে একটি ডামি প্যারামিটার যুক্ত করতে পারে যা কিছু হ্যাশ বা শেষ পরিবর্তিত তারিখ থেকে গণনা করা হয় এই সংস্থানগুলির মধ্যে (আমরা মাইক্রোসফ্ট আজাক্স স্ক্রিপ্ট সংস্থানগুলিতে এটি করি যাতে তাদের চিরকালের জন্য ক্যাশে করা যায় তবে নতুন সংস্করণগুলি এখনও উপস্থিত হওয়ার সাথে সাথে পরিবেশন করা যায়)। যদি ক্লায়েন্ট পরিবর্তনগুলি জানতে না পারে তবে সঠিক উপায়টি হ'ল সার্ভারের জন্য HEAD অনুরোধগুলি সঠিকভাবে পরিচালনা করতে হবে এবং ক্লায়েন্টকে ক্যাশেড সংস্করণ ব্যবহার করা উচিত কিনা তা জানাতে হবে। আমার কাছে মনে হয় এলোমেলো প্যারামিটার যুক্ত করা বা ক্লায়েন্টের কাছ থেকে কখনই ক্যাশে না বলা ভুল কারণ ক্যাশেযোগ্যতা সার্ভার রিসোর্সের সম্পত্তি এবং তাই সার্ভার-সাইডের সিদ্ধান্ত নেওয়া উচিত। নিজেকে জিজ্ঞাসা করার জন্য আরেকটি প্রশ্ন হ'ল এই সংস্থানটি কি সত্যিই জিইটি-র মাধ্যমে পরিবেশন করা উচিত বা এটি পোষ্টের মধ্য দিয়ে যেতে হবে? এটি শব্দার্থবিজ্ঞানের একটি প্রশ্ন, তবে এটিতে সুরক্ষাও জড়িত রয়েছে (এমন আক্রমণ রয়েছে যা কেবলমাত্র সার্ভারটি জিইটি-র জন্য অনুমতি দিলে কার্যকর হয়)। পোষ্ট ক্যাশে পাবেন না।


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

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

এটি আমাকে সহায়তা করেছিল, রেসপন্স ক্যাচিংটি ডিফল্টরূপে 60 মিটার সার্ভারে সেট করা হয়েছিল। এটিকে নো-ক্যাশে পরিবর্তন করা হয়েছে এবং এটি ক্লায়েন্টের উপর ক্যাচিং বন্ধ করে দিয়েছে।
ম্যাটিজি

4

পরিবর্তে আপনার $ .ajax () এর দিকে নজর দেওয়া উচিত (আপনি যদি jQuery ব্যবহার করছেন তবে এটি দেখতে দেখতে)। একবার দেখুন: http://docs.jquery.com/Ajax/jQuery.ajax#options এবং বিকল্প "ক্যাশে"।

আরেকটি পদ্ধতি হ'ল আপনি কীভাবে সার্ভারের পাশের জিনিসগুলি ক্যাশে করছেন তা দেখার জন্য।


1
দুর্ভাগ্যক্রমে, কিছু তদন্তের পরে, $ .ajax () এবং সেট ক্যাশে = মিথ্যা ব্যবহার করা মূলত একই জিনিসটি করবে। jQuery ক্যোরিস্ট্রিংয়ে কিছু এলোমেলো সংখ্যা যুক্ত করবে এবং এটি বিদ্যমান ক্যোরিস্ট্রিংয়ের জন্য পরীক্ষা করে না। সুতরাং আমার ধারণা $ .get () ব্যবহার করা যথেষ্ট হবে।
সালামান্ডের

আহ, ঠিক আছে. এটি কখনও চেষ্টা
করেননি

এমনকি aj .জ্যাক্স ব্যবহার করার প্রয়োজন নেই। সহজভাবে .ajaxSetup ব্যবহার করুন।
পিটার জে

3

দেওয়া উত্তরের উত্তরে একটি সামান্য সংযোজন: আপনি যদি জাভাস্ক্রিপ্ট ব্যতীত ব্যবহারকারীদের জন্য একটি অ-এজাক্স ব্যাকআপ সলিউশন নিয়ে চালিয়ে যাচ্ছেন তবে আপনাকে সেইভাবে সার্ভার-সাইড শিরোনামগুলি সঠিকভাবে পেতে হবে। এটি অসম্ভব নয়, যদিও আমি তাদের বোঝে যারা এটি ছেড়ে দেয়;)

আমি নিশ্চিত যে এসও-তে আরও একটি প্রশ্ন রয়েছে যা আপনাকে উপযুক্ত যে শিরোনামের পুরো সেট দেয়। আমি সম্পূর্ণরূপে বিশ্বাসী নই মাইসিয়াস উত্তর সমস্ত ঘাঁটি 100% কভার করে।


3

আপনারা যারা মোবাইল সাফারিতে cacheঅপশনটি ব্যবহার করছেন তাদের কাছে $.ajaxSetup()মনে হয় যে আপনাকে পোষ্টগুলির জন্য একটি টাইমস্ট্যাম্প ব্যবহার করতে হতে পারে, যেহেতু মোবাইল সাফারি সেটিকেও ক্যাশে করে। নথি অনুযায়ী $.ajax()(যা থেকে আপনি নির্দেশিত $.ajaxSetup()):

মিথ্যাতে ক্যাশে সেট করা কেবলমাত্র হেড এবং জিইটি অনুরোধের সাথে সঠিকভাবে কাজ করবে। এটি জিইটি প্যারামিটারগুলিতে "_ = {টাইমস্ট্যাম্প}" যুক্ত করে কাজ করে। জিইটি-র মাধ্যমে ইতিমধ্যে অনুরোধ করা কোনও ইউআরএল-এ পোস্ট করা হলে আইই 8 ব্যতীত অন্যান্য ধরণের অনুরোধের জন্য প্যারামিটারের প্রয়োজন হয় না।

সুতরাং আমি কেবল উপরে উল্লিখিত ক্ষেত্রে একমাত্র বিকল্পটি সেট করা আপনাকে সহায়তা করবে না।


2

মূলত কেবলমাত্র cache:false;এজ্যাক্সে যুক্ত করুন যেখানে আপনি মনে করেন যে অগ্রগতিটি চলতে চলতে সামগ্রীটি পরিবর্তিত হবে। এবং যে স্থানটি সেখানে সামগ্রী বদলাবে না আপনি এটিকে বাদ দিতে পারেন। এভাবে আপনি প্রতিবার নতুন প্রতিক্রিয়া পাবেন


2

ইন্টারনেট এক্সপ্লোরারের আজাক্স ক্যাচিং: আপনি এটি সম্পর্কে কী করতে যাচ্ছেন? তিনটি পদ্ধতির পরামর্শ দেয়:

  1. তারিখ = [টাইমস্ট্যাম্প] এর মতো ক্যোয়ারী স্ট্রিংয়ে ক্যাশে বস্টিং টোকন যুক্ত করুন। JQuery এবং YUI এ আপনি তাদের স্বয়ংক্রিয়ভাবে এটি করতে বলতে পারেন।
  2. GET এর পরিবর্তে POST ব্যবহার করুন
  3. একটি HTTP প্রতিক্রিয়া শিরোনাম প্রেরণ করুন যা ব্রাউজারগুলিকে এটি ক্যাশে রাখতে বিশেষভাবে নিষেধ করে

2

এখন, আপনার এজ্যাক্স অনুরোধে ক্যাশে বিকল্পটি সক্ষম / অক্ষম করে এটি করা সহজ, ঠিক এর মতো

$(function () {
    var url = 'your url goes here';
    $('#ajaxButton').click(function (e) {
        $.ajax({
            url: url,
            data: {
                test: 'value'
            },
                cache: true, //cache enabled, false to reverse
                complete: doSomething
            });
        });
    });
    //ToDo after ajax call finishes
    function doSomething(data) {
        console.log(data);
    }
});

3
6 বছর পরে আপনি জনাথন যে একই প্রতিক্রিয়া প্রদান করছেন? ಠ_ಠ
redent84

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

এবং আপনার এবং এই এক স্ট্যাকওভারফ্লো . com/a/735084/469218 এর মধ্যে পার্থক্য কী ?
'17

একটি স্পষ্টতই এটি একটি স্পেসিফিকেশন দৃষ্টিকোণ থেকে একটি প্রশ্ন জিজ্ঞাসা !!
ওমর এল ডন

1

আপনি যদি 9 9 ব্যবহার করে থাকেন তবে আপনার নিয়ামক শ্রেণীর সংজ্ঞার সামনে আপনাকে নিম্নলিখিতটি ব্যবহার করতে হবে:

[আউটপুট ক্যাশে (NoStore = সত্য, সময়কাল = 0, ভ্যারিব্যায়াম = "*")]

পাবলিক ক্লাস টেস্টকন্ট্রোলার: নিয়ামক

এটি ব্রাউজারটিকে ক্যাচিং থেকে আটকাবে।

এই লিঙ্কে বিশদ: http://dougwilsonsa.wordpress.com/2011/04/29/disabling-ie9-ajax-response-caching-asp-net-mvc-3-jquery/

আসলে এটি আমার সমস্যার সমাধান করেছে।


1

@ আঠাছ যেমন বলেছিলেন, jQuery ডক্স অনুসারে, $.ajaxSetup({cache:false})জিইটি এবং হেড অনুরোধ ছাড়া অন্যদের জন্য কাজ করবে না।

Cache-Control: no-cacheযাইহোক আপনার সার্ভার থেকে হেডার ফেরত পাঠানো ভাল । এটি উদ্বেগের একটি পরিষ্কার বিচ্ছিন্নতা সরবরাহ করে।

অবশ্যই, এটি আপনার প্রকল্পের অন্তর্ভুক্ত নয় এমন পরিষেবা url- এর জন্য কাজ করবে না। সেক্ষেত্রে ক্লায়েন্ট কোড থেকে কল না করে আপনি সার্ভার কোড থেকে তৃতীয় পক্ষের পরিষেবাটি প্রক্সিংয়ের কথা বিবেচনা করতে পারেন।


1

যদি আপনি। নেট এএসপি এমভিসি ব্যবহার করে থাকেন তবে শেষ পয়েন্ট ফাংশনে নিম্নলিখিত বৈশিষ্ট্য যুক্ত করে নিয়ামক ক্রিয়ায় ক্যাচিং অক্ষম করুন:

[OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)]

আপনি কি আরও ব্যাখ্যা করতে পারেন? কীভাবে অ্যারেটি অ্যাজএক্সের সাথে সম্পর্কিত?
নিকো হাজেস

এটি কোনও অ্যারে নয়, এটি এমভিসি কন্ট্রোলার অ্যাকশনের একটি বৈশিষ্ট্য
মারিউস

0

শিরোনাম যোগ করুন

headers: {
                'Cache-Control':'no-cache'
            }

দয়া করে আপনার উত্তরে কিছু ব্যাখ্যা যুক্ত করুন যাতে অন্যরা এটি শিখতে পারে - এই জাতীয় শিরোনাম কোথায় যুক্ত করা উচিত?
নিকো হাজেস

-3

যোগ Math.random() অনুরোধ URL এ


2
এটি অস্থির ফলাফল দেবে।
আজ.তুলান

ম্যাথ.র্যান্ডম কেবল ইউআরএল এর মতো একটি প্রমিটার হিসাবে কাজ করবে? _ = [ম্যাথ। র্যান্ডম ()] এর অস্থির ফলাফলের সাথে কিছুই করার নেই।
xiaoyifang

4
আমি বুঝতে পারছি তুমি কি করছিল আমি কেবল মন্তব্য করছিলাম যে ম্যাথ.র্যান্ডম () কখনও কখনও আপনাকে একই সংখ্যা দু'বার দিবে। আপনি যদি আপনার সিস্টেমটিকে অনিশ্চয়তায় পূর্ণ করেন তবে এগুলি কেবল একে অপরের উপরে যুক্ত হবে।
এজে টটলান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.