প্রগমা এবং ক্যাশে-নিয়ন্ত্রণ শিরোনামের মধ্যে পার্থক্য?


166

আমি উইকিপিডিয়ায় প্রাগমা শিরোনাম সম্পর্কে পড়েছি যা বলে:

"প্রগমা: নো-ক্যাশে শিরোলেখ ক্ষেত্র হ'ল একটি এইচটিটিপি / ১.০ শিরোলেখ যা অনুরোধে ব্যবহারের উদ্দেশ্যে তৈরি হয় It এটি সার্ভারের জন্য নয়, উত্সটির নতুন সংস্করণ চায় সার্ভার এবং কোনও মধ্যবর্তী ক্যাশে বলতে ব্রাউজারের পক্ষে এটি একটি মাধ্যম is ব্রাউজারটিকে রিসোর্সটি ক্যাশে না করতে বলার জন্য user

তবে আমি বুঝতে পারি না এটি কী করে? Cache-Controlযার শিরোনামটির মান no-cacheএবং Pragmaযার মানও তার মধ্যে পার্থক্য কী no-cache?

উত্তর:


196

Pragmaএটি HTTP / 1.0 বাস্তবায়ন এবং cache-controlএটি একই ধারণার HTTP / 1.1 বাস্তবায়ন। তারা উভয়ই ক্লায়েন্টকে প্রতিক্রিয়া ক্যাশে করা থেকে বিরত করার উদ্দেশ্যে। পুরানো ক্লায়েন্টরা HTTP / 1.1 সমর্থন না করতে পারে এজন্য সেই শিরোলেখ এখনও ব্যবহারের মধ্যে রয়েছে।


31
যদিও নীচে সিএনএসটির উত্তর আরও জটিল, স্পেসিফিকেশন অনুসারে এটি আরও অনেক বেশি সঠিক। Pragma: no-cacheশুধুমাত্র অনুরোধগুলিতে ব্যবহার করার উদ্দেশ্যে (যার অর্থ "আমি মূলটি চাই, ক্যাশেড অনুলিপিটি নয়") এবং এর আচরণ প্রতিক্রিয়াগুলির জন্য নির্দিষ্ট করা হয়নি।
ক্লাইমে

5
Cache-Control: no-cacheঅনুরোধগুলির জন্য একই অর্থ রয়েছে তবে প্রতিক্রিয়াগুলির জন্য এটি প্রকৃতপক্ষে সংজ্ঞায়িতও করা হয়েছে, যার অর্থ "যদি আপনি ভবিষ্যতে এর একটি ক্যাশেড অনুলিপি ব্যবহার করতে চান তবে আপনাকে অবশ্যই আমার সাথে প্রথমে পরীক্ষা করা উচিত যে এটি আপ-টু-ডেট (অর্থাত্ পুনরায়করণ কার্যকর করা)"।
ক্লাইমে

3
এটি ক্যাশে নিয়ন্ত্রণের জন্য, ক্যাশে-প্রতিরোধের জন্য এটি কেবলমাত্র হবে না, এটি "আপনি এটি ক্যাশেও করতে পারেন" বলেও ব্যবহার করা যেতে পারে। ....
jave.web

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

তারা উভয়ই ক্লায়েন্টকে প্রতিক্রিয়া ক্যাচিং থেকে বাঁচানোর জন্য বোঝানো হচ্ছে পাঠকদের জন্য একটি বিভ্রান্তিকর নোট। max-ageএটিতেও থাকতে পারে যা ক্যাচিং প্রতিরোধ করে না। এটি কেবল এর জন্য একটি মেয়াদোত্তীর্ণ তারিখ নির্ধারণ করে ...
মধু

97

কোনও পার্থক্য নেই, Pragmaএটি কেবলমাত্র ক্লায়েন্টের অনুরোধগুলির ক্ষেত্রে প্রযোজ্য হিসাবে সংজ্ঞায়িত করা হয়েছে, যেখানে ক্লায়েন্টদের Cache-Controlঅনুরোধ এবং সার্ভারের জবাব দুটিই ব্যবহৃত হতে পারে।

সুতরাং, মানদণ্ডগুলি যতদূর যায়, কেবল ক্লায়েন্টের কাছে একটি অনুরোধ করা এবং সার্ভার ক্লায়েন্টের কাছ থেকে একটি অনুরোধ গ্রহণ করার দৃষ্টিকোণ থেকে তাদের তুলনা করা যেতে পারে। Http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32 সংজ্ঞায়িত দৃশ্যকল্প নিম্নরূপ:

এইচটিটিপি / ১.১ ক্যাশে "প্রগমা: নো-ক্যাশে" ব্যবহার করা উচিত যেন ক্লায়েন্টটি "ক্যাশে-নিয়ন্ত্রণ: নো-ক্যাশে" পাঠিয়েছিল। এইচটিটিপি-তে কোনও নতুন প্রগমা নির্দেশ সংজ্ঞায়িত করা হবে না।

  Note: because the meaning of "Pragma: no-cache as a response
  header field is not actually specified, it does not provide a
  reliable replacement for "Cache-Control: no-cache" in a response

আমি উপরে যেভাবে পড়ব:

  • আপনি যদি একটি ক্লায়েন্ট লিখছেন এবং প্রয়োজন no-cache:

    • কেবল Pragma: no-cacheআপনার অনুরোধগুলিতে ব্যবহার করুন, যেহেতু আপনি জানেন না Cache-Controlযে সার্ভার দ্বারা সমর্থিত কিনা ;
    • কিন্তু উত্তরে, ক্যাশে রাখবেন কিনা তা সিদ্ধান্ত নেওয়ার জন্য, পরীক্ষা করে দেখুন Cache-Control
  • আপনি যদি একটি সার্ভার লিখছেন:

    • ক্লায়েন্টদের কাছ থেকে অনুরোধ পার্সিংয়ের জন্য, পরীক্ষা করুন Cache-Control; যদি পাওয়া না যায় Pragma: no-cacheতবে Cache-Control: no-cacheলজিকটি পরীক্ষা করুন এবং সম্পাদন করুন ;
    • জবাবে, সরবরাহ Cache-Control

অবশ্যই, বাস্তবতা আরএফসি-র লিখিত বা বোঝানো থেকে আলাদা হতে পারে!


5
হেডার উভয় আছে যদি? Cache-Control: max-age=86400এবং Pragma: no-cache? আধুনিক ব্রাউজারগুলির দ্বারা কোনটি সম্মানিত হবে?
পিকেহান্টার

3
@ পি কেহান্টার, আপনি যদি আচরণটি অপরিজ্ঞাত করে থাকেন তবে আপনি কোন পথে যাবেন সে যত্ন করবেন কেন? আপনি যদি সার্ভারের জন্য দায়বদ্ধ হন তবে ক্লায়েন্টকে বিভ্রান্তিমূলক তথ্য দেওয়ার চেয়ে পরিষ্কারভাবে আপনি আরও ভাল করতে পারেন। এছাড়াও, আমার উত্তরে নির্দেশিত হিসাবে, Pragma: no-cacheকেবলমাত্র ব্রাউজারের অনুরোধগুলির জন্য সংজ্ঞায়িত করা হয়েছে এবং এটি সার্ভার থেকে ব্রাউজারের জবাবগুলিতে পুরোপুরি অবৈধ এবং সংজ্ঞায়িত হবে, উদাহরণস্বরূপ, আমি কল্পনা করতে পারি যে প্রতিটি ব্রাউজার (আধুনিক হোক বা না না) এর যে কোনও জবাব পেতে পারে এ জাতীয় শিরোনামকে তাড়িয়ে দেওয়া উচিত।
সিএনএসটি

3
একটি আধুনিক ব্রাউজারের উভয় উপস্থিত থাকলে ক্যাশে-কন্ট্রোলের পক্ষে প্রগমা উপেক্ষা করা উচিত কারণ পরবর্তী সময়কাল এবং অন্যান্য তথ্য যা প্রাথমিক ০.০ প্রোটোকলে উপলব্ধ ছিল না তা নির্দিষ্ট করে দিতে পারে।
র‌্যান্ডাল বোর্ক

17
| Stop using          | Replaced with                    |
| (HTTP 1.0)          | (HTTP 1.1 - 1999)                |
|---------------------|----------------------------------|
| Expires: [date]     | Cache-Control: max-age=[seconds] |
| Pragma: no-cache    | Cache-Control: no-cache          |

এটি যদি 1999 এর পরে হয় এবং আপনি এখনও মেয়াদ উত্তীর্ণ বা প্রাগমা ব্যবহার করছেন তবে আপনি এটি ভুল করছেন।

আমি আপনার দিকে তাক করছি স্ট্যাকওভারফ্লো:

200 OK
Pragma: no-cache
Content-Type: application/json
X-Frame-Options: SAMEORIGIN
X-Request-Guid: a3433194-4a03-4206-91ea-6a40f9bfd824
Strict-Transport-Security: max-age=15552000
Content-Length: 54
Accept-Ranges: bytes
Date: Tue, 03 Apr 2018 19:03:12 GMT
Via: 1.1 varnish
Connection: keep-alive
X-Served-By: cache-yyz8333-YYZ
X-Cache: MISS
X-Cache-Hits: 0
X-Timer: S1522782193.766958,VS0,VE30
Vary: Fastly-SSL
X-DNS-Prefetch-Control: off
Cache-Control: private

tl; dr: PragmaHTTP / 1.0 এর একটি উত্তরাধিকারী এবং ইন্টারনেট এক্সপ্লোরার 5, বা নেটস্কেপ 4.7 এর পরে আর প্রয়োজন হয় না। আপনি যদি না প্রত্যাশা করেন যে আপনার কিছু ব্যবহারকারী আইআই 5 ব্যবহার করছেন: এটির ব্যবহার বন্ধ করা নিরাপদ।


  • মেয়াদ শেষ: [date] (অবহেলিত - HTTP 1.0)
  • প্রাগমা: নো-ক্যাশে (হ্রাস - HTTP 1.0)
  • ক্যাশে-নিয়ন্ত্রণ: সর্বাধিক বয়স =[seconds]
  • ক্যাশে-নিয়ন্ত্রণ: নো-ক্যাশে (প্রতিটি বারের ক্যাশেড অনুলিপিটি পুনরায় যাচাই করতে হবে)

এবং শর্তসাপেক্ষ অনুরোধগুলি:

  • ইটাগ (সত্তা ট্যাগ) ভিত্তিক শর্তাধীন অনুরোধগুলি
    • সার্ভার: Etag: W/“1d2e7–1648e509289”
    • ক্লায়েন্ট: If-None-Match: W/“1d2e7–1648e509289”
    • সার্ভার: 304 Not Modified
  • পরিবর্তিত তারিখ ভিত্তিক শর্তাধীন অনুরোধগুলি
    • সার্ভার: last-modified: Thu, 09 May 2019 19:15:47 GMT
    • ক্লায়েন্ট: If-Modified-Since: Fri, 13 Jul 2018 10:49:23 GMT
    • সার্ভার: 304 Not Modified

শেষ-সংশোধিত: থু, 09 মে 2019 19:15:47 GMT


2
আরএফসি বলেছে যে কোনও ক্লায়েন্ট ক্যাশে-নিয়ন্ত্রণ সমর্থন না করে আপনি সেগুলি উভয়ই ব্যবহার করা উচিত: সরঞ্জাম. ietf.org/html/rfc7234# পৃষ্ঠা-29
র্যান্ডাল বোর্ক

3
ক্লায়েন্ট "কর্তব্য থেকে" উভয় অন্তর্ভুক্ত - যদি না তা HTTP- র / 1.1 ও HTTP / 1.0 ক্যাশে সার্ভার ভিন্নভাবে বিবেচনা করতে চায়। সার্ভারটি মোটেই অন্তর্ভুক্ত Pragmaকরা উচিত নয় । (HTTP- র / 1.0 ইন, Pragma প্রাপকদের জন্য বাস্তবায়ন-নির্দিষ্ট নির্দেশনা জন্য একটি প্রসার্য ক্ষেত্র হিসেবে সংজ্ঞায়িত করা হয় এই স্পেসিফিকেশন যেমন এক্সটেনশন deprecates ইনটেরোপিরাবিলিটি উন্নত।।)
ইয়ান বয়েড

2
সুরক্ষা দৃষ্টিকোণ থেকে এটি ব্যবহার করার পরামর্শ দেওয়া হয়। অনেক ব্রাউজার প্রাগমা অনুসরণ করে: নো-ক্যাশে নির্দেশনা, সুতরাং এটি OWASP দ্বারা ব্যবহার করার পরামর্শ দেওয়া হয়: owasp.org/index.php/…
র্যান্ডাল বোর্ক

2
@ র্যান্ডালবার্ক: আপনি পুরানো (দুই দশক, কম নয়!) তথ্য ছড়িয়ে দিচ্ছেন। ১৯৯৯ না হলে কোনও ব্রাউজার প্রাগমা নির্দেশকে আর অনুসরণ করে না This এটি কার্গো কাল্ট পরামর্শ: "এটি ক্ষতি করে না এবং আমরা সর্বদা এটি করেছি, সুতরাং এটি ভাল এবং প্রয়োজনীয়।"
পিসকভোর

2
@ পিসকভোর বেশিরভাগ সার্ভারগুলি এখনও 1.0 এবং 1.1 উভয়ই সমর্থন করে, তাই আপনি যদি এইচটিটিপি / ১.০ অনুরোধগুলি সক্রিয়ভাবে অবরুদ্ধ করেন তবে ক্লায়েন্ট কোন প্রোটোকল ব্যবহার করছে তা আপনি চয়ন করেন না। আজ সর্বাধিক ডেভেলপারদের 1.0 ব্লক করতে বিরক্ত করবেন না, অত এটি এখনও একটি সেরা অভ্যাস, এমনকি 2019.
রান্ডাল Borck
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.