নো-ক্যাশে এবং অবশ্যই পুনঃনির্মাণের মধ্যে পার্থক্য


179

আরএফসি 2616 থেকে

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1

নো-ক্যাশে

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

সুতরাং এটি এজেন্টদের সমস্ত প্রতিক্রিয়া পুনরায় বৈকল্পিক করার নির্দেশ দেয় ।

এই তুলনায়

অবশ্যই revalidate

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

সুতরাং এটি এজেন্টদের বাসি প্রতিক্রিয়াগুলিকে পুনরায় বৈধ করার জন্য নির্দেশ দেয় ।

বিশেষত সম্পর্কিত ক্ষেত্রে no-cache, ব্যবহারকারী এজেন্টরা বাস্তবে কীভাবে এই নির্দেশনাটি অনুশীলন করে?

no-cacheযদি আছে must-revalidateএবং এর বিন্দু কি max-age?

এই মন্তব্য দেখুন:

http://palpapers.plynt.com/issues/2008Jul/cache-control-attributes/

নো-ক্যাশে

যদিও এই দিকনির্দেশক মনে হচ্ছে এটি ব্রাউজারটিকে পৃষ্ঠাটি ক্যাশে না করার নির্দেশ দিচ্ছে, তবে একটি সূক্ষ্ম পার্থক্য রয়েছে। আরএফসি অনুসারে, "নো-ক্যাশে" নির্দেশনাটি ব্রাউজারকে বলেছে যে ক্যাশে থেকে পৃষ্ঠা পরিবেশন করার আগে এটি সার্ভারের সাথে পুনরায় বৈধকরণ করা উচিত। পুনরায়করণ একটি ঝরঝরে কৌশল যা অ্যাপ্লিকেশনটিকে ব্যান্ড-প্রস্থ সংরক্ষণ করতে দেয়। ব্রাউজারটি ক্যাশেড পৃষ্ঠাটি যদি না পরিবর্তন হয় তবে সার্ভারটি কেবলমাত্র এটি ব্রাউজারে সিগন্যাল করে এবং ক্যাশে থেকে পৃষ্ঠাটি প্রদর্শিত হয়। সুতরাং, ব্রাউজারটি (তাত্ত্বিকভাবে, কমপক্ষে) পৃষ্ঠাটি তার ক্যাশে সংরক্ষণ করে তবে সার্ভারের সাথে পুনর্নির্মাণের পরে কেবল এটি প্রদর্শন করে। অনুশীলনে, IE এবং ফায়ারফক্স নো-ক্যাশের নির্দেশকে এমনভাবে আচরণ করা শুরু করেছে যেন তা ব্রাউজারকে পৃষ্ঠাটি ক্যাশে না করার নির্দেশ দেয়। আমরা প্রায় এক বছর আগে এই আচরণটি পর্যবেক্ষণ শুরু করেছি।

কেউ কি এর থেকে আরও কিছু অফিসিয়াল পেয়েছে?

হালনাগাদ

অবশ্যই-পুনর্নির্দেশীয় নির্দেশিকা অবশ্যই সার্ভার দ্বারা ব্যবহার করা উচিত যদি এবং কেবলমাত্র যদি উপস্থাপনের উপর কোনও অনুরোধকে বৈধতা দিতে ব্যর্থ হয়ে ভুল ক্রিয়াকলাপ হতে পারে যেমন নিঃশব্দে অনির্বাচিত আর্থিক লেনদেন।

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

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

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

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

তাই বিন্দু must-revalidateযখন এটি মামুলি যায়, যা শুধুমাত্র ঘটতে পারে যখন আপনি একটি জীবনকাল / বয়স সেট করেছেন, এইভাবে যদি একটি 'বাইপাস ক্যাশে' জোর হয় must-revalidateকোন বয়স বা অন্য হেডার সঙ্গে একটি প্রতিক্রিয়া উপর সেট করা হয়, এটা কার্যকরভাবে সমতুল্য হয়ে no-cacheযেহেতু প্রতিক্রিয়া অবিলম্বে বাসি বিবেচনা করা হবে।

- সুতরাং আমি শেষ পর্যন্ত গিলির উত্তরটি চিহ্নিত করব!


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

দয়া করে গ্রিনবাইটস.ডে / টেক / ওয়েবেডাভ / পড়ুন এবং দেখুন এটি আপনার পক্ষে বিষয়গুলি স্পষ্ট করে কিনা।
জুলিয়ান রেসকে


উত্তরের জন্য এই সিদ্ধান্ত গাছ পরীক্ষা stackoverflow.com/a/49925190/3748498
pravdomil

উত্তর:


191

আমি বিশ্বাস করি যে এর must-revalidateঅর্থ:

ক্যাশের মেয়াদ শেষ হয়ে গেলে, বাসি প্রতিক্রিয়াগুলি গ্রহণযোগ্য কিনা তা যদি তারা বলে যে ব্যবহারকারীদের কাছে বাসি প্রতিক্রিয়াগুলি ফিরিয়ে দিতে অস্বীকার করুন।

যেখানে no-cacheবোঝানো হয়েছে:

must-revalidate আরও সত্য প্রতিক্রিয়া এখনই বাসি হয়ে যায়।

যদি কোনও প্রতিক্রিয়া 10 সেকেন্ডের জন্য ক্যাশেযোগ্য হয়, তবে 10 সেকেন্ডের পরে must-revalidateলাথি মারবে , যেখানে 0 সেকেন্ড পরে no-cacheবোঝা যাচ্ছে must-revalidate

কমপক্ষে, এটি আমার ব্যাখ্যা।


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

44
যার অর্থ max-age=0, must-revalidateএবং no-cacheঅভিন্ন
আনশুল

5
@ আনশুল, প্রথমে আমি ভেবেছিলাম আপনি সঠিক ছিলেন যে 'সর্বোচ্চ-বয়স = 0, অবশ্যই পুনঃব্যবসায়ী এবং নো-ক্যাশে অভিন্ন' তবে জেফ্রি ফক্সের উত্তর দেখুন যা এটি দেখতে খুব উপযুক্ত নয় indicate
ডন হ্যাচ

2
@ আনশুল না, must-revalidateএবং no-cacheনতুন প্রতিক্রিয়াগুলির পৃথক অর্থ রয়েছে: যদি কোনও ক্যাশেড প্রতিক্রিয়া তাজা হয় (যেমন, প্রতিক্রিয়াটির মেয়াদ শেষ হয়নি), must-revalidateতবে প্রক্সিটি সার্ভারের সাথে পুনর্বিবেচনা না করেই এখুনি পরিবেশন করবে, অন্যদিকে no-cacheপ্রক্সিটি অবশ্যই পুনরায় বাতিল করতে হবে নবীনতা নির্বিশেষে ক্যাশেড প্রতিক্রিয়া উত্স: "এইচটিটিপি - সংজ্ঞা নির্দেশিকা", পৃষ্ঠা 182-183।
ম্যাথিয়াস ব্রাউন 10

8
@ মাথিয়াস ব্রাউন আহ, আমি বিভ্রান্তির উত্স দেখতে পাচ্ছি। আমার লেখা no-cacheএবং max-age=0, must-revalidateএকইরকম
আনশুল

24

max-age=0, must-revalidateএবং no-cacheএকেবারে অভিন্ন নয়। এর সাথে must-revalidate, যদি সার্ভারটি একটি পুনর্বিবেচনার অনুরোধটির প্রতিক্রিয়া না জানায় তবে ব্রাউজার / প্রক্সি একটি 504 ত্রুটি ফেরত আসবে বলে মনে করা হচ্ছে। এর সাহায্যে no-cacheএটি কেবল ক্যাশেড সামগ্রী প্রদর্শন করবে যা সম্ভবত ব্যবহারকারী পছন্দ করবে (কিছুই না বলে বাসি কিছু রাখাই ভাল)। এই কারণেই must-revalidateকেবল সমালোচনামূলক লেনদেনের উদ্দেশ্যে করা হয়।


10
আপনার no-cacheব্যাখ্যা সম্পর্কে নিশ্চিত নয় । আরএফসি 7234 থেকে "নো-ক্যাশে" প্রতিক্রিয়া নির্দেশিকাটি নির্দেশ করে যে প্রতিক্রিয়াটি মূল সার্ভারে সফল বৈধতা ছাড়াই পরবর্তী অনুরোধটি পূরণ করতে ব্যবহার করা উচিত নয়। এটি কোনও অরিজিনাল সার্ভারকে এটির সাথে যোগাযোগ না করেই কোনও অনুরোধ সন্তুষ্ট করতে ক্যাশে ব্যবহার করতে বাধা দেওয়ার অনুমতি দেয় এমনকি এমনকী ক্যাশেও যা বাসি প্রতিক্রিয়াগুলি প্রেরণের জন্য কনফিগার করা হয়েছে। এটি এর জন্য বিধিনিষেধের মতো বলে মনে হচ্ছেmust-revalidate
আনশুল

9
জেফরির কি প্রমাণ রয়েছে যে প্রয়োগগুলি তার বর্ণনার সাথে আচরণ করে?
অরেঞ্জডোগ

আমি মনে করি এই উত্তরটি প্রক্সি / এলবি সার্ভারের জন্য সঠিক। তবে প্রকৃতপক্ষে, ব্রাউজারগুলি সেই ক্ষেত্রে 504 ফেরত দেয় না।
ইয়ান দানেনডাল

এর must-validateঅর্থmust-refresh
সাইমন_উইভার 14'19

15

জেফ্রি ফক্সের ব্যাখ্যাটির সাথে no-cache, আমি ক্রোম 52.0.2743.116 মিটার অধীনে পরীক্ষা করেছি, ফলাফলটি দেখায় যে no-cacheএকইরকম আচরণ করে , সার্ভারটি অ্যাক্সেসযোগ্য না হলে must-revalidateতারা সকলেই স্থানীয় ক্যাশে ব্যবহার করবে না এবং ব্রাউজারের পিছনে ট্যাপ করার সময় তারা সকলেই ক্যাশে ব্যবহার করবে না / সার্ভারটি অ্যাক্সেসযোগ্য হলে ফরোয়ার্ড বোতাম। উপরের মত, আমি কমপক্ষে বাস্তবায়নের max-age=0, must-revalidateক্ষেত্রে অভিন্ন বলে মনে করি no-cache


যখন সার্ভারটি পুনরায়করণের জন্য উপলব্ধ থাকে তখন Chrome কি স্থানীয় ক্যাশে ব্যবহার করবে? (অর্থাত্ "যদি-যদি সংশোধন করা হয়") উভয় ক্ষেত্রেই?
ধনী

-2

আমি মনে করি max-age=0, must-revalidateএবং এর মধ্যে একটি পার্থক্য আছে no-cache:

ইন must-revalidateকেস ক্লায়েন্ট একটি পাঠাতে অনুমতি দেওয়া হয় If-Modified-Sinceঅনুরোধ এবং যদি ক্যাশে থেকে প্রতিক্রিয়া পরিবেশন করা 304 Not Modifiedফিরিয়ে দেওয়া হয়।

ইন no-cacheকেস, ক্লায়েন্ট প্রতিক্রিয়া ক্যাশে করা উচিত নয়, যাতে ব্যবহার করা উচিত নয় If-Modified-Since


6
তবে এর no-cacheঅর্থ এই নয় no-store- এর সাথে no-cache, সংস্থানটি এখনও ক্লায়েন্টে ক্যাশে করা যেতে পারে; এটি ব্যবহার করার আগে এটি পুনরায় যাচাই করতে হবে?
অ্যারন

4
আপনি বিবাদযুক্ত no-cacheএবং no-storeno-cacheমানে রিসোর্সটি পুনরায় চালু করতে হবে । পুনর্বিবেচনার মধ্যে শর্তসাপেক্ষ অনুরোধগুলি ব্যবহার করার বিকল্প অন্তর্ভুক্ত রয়েছে, যেমন If-None-Matchএবং If-Modified-Since
জুলস স্যাম র্যান্ডলফ

1
@ জুলারস র্যান্ডল্ফ: আপনি ঠিক থাকতে পারেন। আপনার কি কোনও পরীক্ষা / ডেমো আছে? এই প্রশ্নে বিবাদযুক্ত সমস্ত প্রমাণ-মুক্ত দাবী হতাশাজনক। এমনকি গৃহীত উত্তরটি কেবল "কমপক্ষে, এটি আমার ব্যাখ্যা" বলে। আমি যদি কিছুটা সময় পাই তবে আমি একটি পরীক্ষার বেড সেট আপ করতে এবং এটি এখানে পোস্ট করতে পারি।
ধনী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.