ভূমিকা
শিরোনামের সঠিক ন্যূনতম সেট যা সমস্ত উল্লিখিত ক্লায়েন্ট (এবং প্রক্সিগুলি) জুড়ে কাজ করে:
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
Cache-Control
প্রতি ক্লায়েন্ট এবং প্রক্সি (এবং পরোক্ষভাবে পাশে কিছু ক্লায়েন্টদের দ্বারা প্রয়োজনীয় জন্য HTTP 1.1 বৈশিষ্ট হল Expires
)। Pragma
প্রতি প্রাগৈতিহাসিক ক্লায়েন্টদের জন্য HTTP 1.0 বৈশিষ্ট হয়। Expires
HTTP- র 1.0 এবং ক্লায়েন্ট এবং প্রক্সি জন্য 1.1 চশমা প্রতি। HTTP 1.1 এ, Cache-Control
অগ্রাধিকার নেয় Expires
, সুতরাং এটি কেবল HTTP 1.0 প্রক্সির জন্য রয়েছে।
আপনি যদি কেবল এইচটিটিপিএস-এর মাধ্যমে পৃষ্ঠাগুলি পরিবেশন করার সময় আইই 6 এবং এর ভাঙ্গা ক্যাচিংয়ের বিষয়ে চিন্তা না করেন no-store
তবে আপনি বাদ দিতে পারেন Cache-Control: no-cache
।
Cache-Control: no-store, must-revalidate
Pragma: no-cache
Expires: 0
আপনি যদি আই 6 বা HTTP 1.0 ক্লায়েন্ট সম্পর্কে চিন্তা না করেন (HTTP 1.1 1997 টি প্রবর্তিত হয়েছিল), তবে আপনি বাদ দিতে পারেন Pragma
।
Cache-Control: no-store, must-revalidate
Expires: 0
আপনি যদি এইচটিটিপি ১.০ প্রক্সির বিষয়ে চিন্তা না করেন তবে আপনি বাদ দিতে পারেন Expires
।
Cache-Control: no-store, must-revalidate
অন্যদিকে, যদি সার্ভারটিতে একটি বৈধ Date
শিরোনাম স্বতঃ-অন্তর্ভুক্ত থাকে তবে আপনি তাত্ত্বিকভাবে Cache-Control
খুব বাদ দিতে পারেন এবং Expires
কেবল নির্ভর করতে পারেন ।
Date: Wed, 24 Aug 2016 18:32:02 GMT
Expires: 0
তবে এটি ব্যর্থ হতে পারে যদি উদাহরণস্বরূপ শেষ-ব্যবহারকারী অপারেটিং সিস্টেমের তারিখটি পরিচালনা করে এবং ক্লায়েন্ট সফ্টওয়্যার এর উপর নির্ভর করে।
অন্যান্য Cache-Control
পরামিতি যেমন max-age
উপরোক্ত Cache-Control
প্যারামিটারগুলি নির্দিষ্ট করা হয় তা অপ্রাসঙ্গিক । এখানে Last-Modified
অন্যান্য বেশিরভাগ উত্তরের হিসাবে অন্তর্ভুক্ত শিরোনামটি কেবল আকর্ষণীয় যদি আপনি প্রকৃতপক্ষে অনুরোধটি ক্যাশে করতে চান তবে আপনাকে এটিকে নির্দিষ্ট করার দরকার নেই specify
কীভাবে সেট করবেন?
পিএইচপি ব্যবহার:
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
header("Pragma: no-cache"); // HTTP 1.0.
header("Expires: 0"); // Proxies.
জাভা সার্লেট বা নোড.জেএস ব্যবহার করে:
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setHeader("Expires", "0"); // Proxies.
এএসপি.এনইটি-এমভিসি ব্যবহার করে
Response.Cache.SetCacheability(HttpCacheability.NoCache); // HTTP 1.1.
Response.Cache.AppendCacheExtension("no-store, must-revalidate");
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.
এএসপি.নেট ওয়েব এপিআই ব্যবহার করে:
// `response` is an instance of System.Net.Http.HttpResponseMessage
response.Headers.CacheControl = new CacheControlHeaderValue
{
NoCache = true,
NoStore = true,
MustRevalidate = true
};
response.Headers.Pragma.ParseAdd("no-cache");
// We can't use `response.Content.Headers.Expires` directly
// since it allows only `DateTimeOffset?` values.
response.Content?.Headers.TryAddWithoutValidation("Expires", 0.ToString());
এএসপি.এনইটি:
Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.
ASP.NET কোর v3 ব্যবহার করে
// using Microsoft.Net.Http.Headers
Response.Headers[HeaderNames.CacheControl] = "no-cache, no-store, must-revalidate";
Response.Headers[HeaderNames.Expires] = "0";
Response.Headers[HeaderNames.Pragma] = "no-cache";
এএসপি ব্যবহার:
Response.addHeader "Cache-Control", "no-cache, no-store, must-revalidate" ' HTTP 1.1.
Response.addHeader "Pragma", "no-cache" ' HTTP 1.0.
Response.addHeader "Expires", "0" ' Proxies.
কারাগারে রুবি বা পাইথন / ফ্লাস্ক ব্যবহার করুন:
headers["Cache-Control"] = "no-cache, no-store, must-revalidate" # HTTP 1.1.
headers["Pragma"] = "no-cache" # HTTP 1.0.
headers["Expires"] = "0" # Proxies.
পাইথন / জ্যাঙ্গো ব্যবহার:
response["Cache-Control"] = "no-cache, no-store, must-revalidate" # HTTP 1.1.
response["Pragma"] = "no-cache" # HTTP 1.0.
response["Expires"] = "0" # Proxies.
পাইথন / পিরামিড ব্যবহার:
request.response.headerlist.extend(
(
('Cache-Control', 'no-cache, no-store, must-revalidate'),
('Pragma', 'no-cache'),
('Expires', '0')
)
)
গো ব্যবহার করুন:
responseWriter.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") // HTTP 1.1.
responseWriter.Header().Set("Pragma", "no-cache") // HTTP 1.0.
responseWriter.Header().Set("Expires", "0") // Proxies.
অ্যাপাচি .htaccess
ফাইল ব্যবহার :
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>
এইচটিএমএল 4 ব্যবহার করে:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
এইচটিএমএল প্রতিক্রিয়া শিরোনাম বনাম এইচটিএমএল মেটা ট্যাগ
গুরুত্বপূর্ণটি হ'ল এইচটিটিপি সংযোগের উপর যখন কোনও এইচটিএমএল পৃষ্ঠা পরিবেশন করা হয় এবং যখন একটি শিরোনাম এইচটিটিপি প্রতিক্রিয়া শিরোনাম এবং এইচটিএমএল ট্যাগ উভয় উপস্থিত থাকে <meta http-equiv>
, তখন এইচটিটিপি রেসপন্স শিরোনামে উল্লিখিত একটিটি এইচটিএমএল মেটা ট্যাগের চেয়ে প্রাধান্য পাবে। এইচটিএমএল মেটা ট্যাগটি কেবল তখনই ব্যবহার করা হবে যখন কোনও file://
ইউআরএল মাধ্যমে স্থানীয় ডিস্ক ফাইল সিস্টেম থেকে পৃষ্ঠাটি দেখা হয় । আরও দেখুন W3 এইচটিএমএল বৈশিষ্ট অধ্যায় 5.2.2 । আপনি যখন এগুলিকে প্রোগ্রামগতভাবে নির্দিষ্ট না করেন তখন এটিকে যত্ন সহকারে রাখুন কারণ ওয়েবসভারটি কিছু ডিফল্ট মান অন্তর্ভুক্ত করতে পারে।
সাধারণত, আপনি সূচনা দ্বারা বিভ্রান্তি এড়াতে এবং হার্ড এইচটিটিপি প্রতিক্রিয়া শিরোনামগুলির উপর নির্ভর করতে কেবল এইচটিএমএল মেটা ট্যাগগুলি নির্দিষ্ট না করাই ভাল । তদুপরি, বিশেষত এই <meta http-equiv>
ট্যাগগুলি HTML5 এ অবৈধ । শুধু http-equiv
তালিকাভুক্ত মান HTML5 এর স্পেসিফিকেশন অনুমতি দেওয়া হয়।
প্রকৃত HTTP প্রতিক্রিয়া শিরোনাম যাচাই করা হচ্ছে
এক এবং অন্যটি যাচাই করতে, আপনি ওয়েব ব্রাউজারের বিকাশকারী সরঞ্জামসেটের HTTP ট্র্যাফিক মনিটরে এগুলি দেখতে / ডিবাগ করতে পারেন। আপনি Chrome / Firefox23 + / IE9 + এ F12 টিপুন এবং তারপরে "নেটওয়ার্ক" বা "নেট" ট্যাব প্যানেলটি খুলতে এবং তারপরে HTTP অনুরোধ এবং প্রতিক্রিয়া সম্পর্কে সমস্ত বিবরণ উন্মোচন করতে আগ্রহের এইচটিটিপি অনুরোধে ক্লিক করে সেখানে পৌঁছে যেতে পারেন। নিচে স্ক্রিনশট Chrome থেকে হল:
আমি ফাইল ডাউনলোডগুলিতে সেই শিরোনামগুলি সেট করতে চাই
প্রথমত, এই প্রশ্নোত্তর "ওয়েব পৃষ্ঠাগুলি" (এইচটিএমএল পৃষ্ঠাগুলি), "ফাইল ডাউনলোড" (পিডিএফ, জিপ, এক্সেল, ইত্যাদির) উপর লক্ষ্যযুক্ত। আপনি সেগুলি আরও ভাল করে কাটাতে এবং ইউআরআই পথের কোথাও কোথাও কোনও ফাইল সংস্করণ শনাক্তকরণ ব্যবহার করে বা পরিবর্তিত ফাইলে একটি রেডাউনলোড জোর করার জন্য কোয়েরিস্ট্রিং ব্যবহার করতে চাইতেন। যে কোনও উপায়ে ফাইল ডাউনলোডে এই নো-ক্যাশে শিরোনাম প্রয়োগ করার সময়, এইচটিটিপিএসের পরিবর্তে এইচটিটিপিএস-এর মাধ্যমে ফাইল ডাউনলোড করার সময় আই 7/8 বাগটি থেকে সাবধান থাকুন। বিশদ জন্য, দেখুন IE foo.jsf ডাউনলোড করতে পারবেন না। আইই এই ইন্টারনেট সাইটটি খুলতে সক্ষম ছিল না। অনুরোধ করা সাইটটি হয় অনুপলব্ধ বা পাওয়া যায় না ।