সমস্ত ব্রাউজার জুড়ে আমরা কীভাবে ওয়েব পৃষ্ঠার ক্যাচিং নিয়ন্ত্রণ করব?


1552

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

নিরাপত্তার কারণে আমরা আমাদের অ্যাপ্লিকেশন নির্দিষ্ট পৃষ্ঠাগুলি ক্যাশে করা হবে, চাই না কখনো ওয়েব ব্রাউজার দ্বারা। এটি অবশ্যই কমপক্ষে নিম্নলিখিত ব্রাউজারগুলির জন্য কাজ করবে:

  • ইন্টারনেট এক্সপ্লোরার 6+
  • ফায়ারফক্স 1.5+
  • সাফারি 3+
  • অপেরা 9+
  • ক্রৌমিয়াম

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


শুধু আইপ্যাড সাফারির জন্য, [এটি] [1] সাহায্য করে? [১]: স্ট্যাকওভারফ্লো.com
বখশি

সহজতমটি ব্যবহার করছে: সর্বোচ্চ-বয়স = 10। এটি নিখুঁত নয় কারণ পৃষ্ঠাটি 10 ​​সেকেন্ডের জন্য ক্যাশে হবে। তবে এটি হ'ল সর্বনিম্ন "হেডার স্প্যাগেটি" সমাধান। এছাড়াও, এটি কখনও কখনও গতিশীল ওয়েবসাইটগুলিতে বিপরীত প্রক্সি ব্যবহার করে এমন একটি বড় কার্যকারিতা জোগান boo (আপনার ধীর পিএইচপি স্ক্রিপ্ট একবার প্রতি 10 সেকেন্ডে ডাকা হবে এবং তারপর বিপরীত প্রক্সি দ্বারা ক্যাশে করা হবে একবার 10 সেকেন্ডের প্রতি উপায় উত্তম পরিদর্শক প্রতি একবারের।)
হ্যালো ওয়ার্ল্ড


3
এই দুর্দান্ত প্রশ্নের জন্য আপনাকে ধন্যবাদ। কৌতূহলের জন্য এমন পরিস্থিতি কী হতে পারে যা "সুরক্ষা কারণে" রিসিভারটিকে এটি সংরক্ষণ করতে চায় না এমন সময়ে আপনাকে কিছু তথ্য প্রেরণ করে । আপনি তাদের ইতিমধ্যে প্রেরণ!
হিসাবরক্ষক

1
@ অ্যাকাউন্ট্যান্ট: তার দৃশ্যে, ব্যবহারকারী লগ আউট করেছিলেন। কে নিশ্চয়তা দিতে পারে যে সেই ব্যবহারকারী-এজেন্টের পরবর্তী মানব ব্যবহারকারী সেই ব্যক্তি যিনি সবেমাত্র লগ আউট করেছেন?
ফ্যাবিয়েন হাদ্দাদি

উত্তর:


2578

ভূমিকা

শিরোনামের সঠিক ন্যূনতম সেট যা সমস্ত উল্লিখিত ক্লায়েন্ট (এবং প্রক্সিগুলি) জুড়ে কাজ করে:

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

Cache-Controlপ্রতি ক্লায়েন্ট এবং প্রক্সি (এবং পরোক্ষভাবে পাশে কিছু ক্লায়েন্টদের দ্বারা প্রয়োজনীয় জন্য HTTP 1.1 বৈশিষ্ট হল Expires)। Pragmaপ্রতি প্রাগৈতিহাসিক ক্লায়েন্টদের জন্য HTTP 1.0 বৈশিষ্ট হয়। ExpiresHTTP- র 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 থেকে হল:

ক্রোম বিকাশকারী সরঞ্জামসেট এইচটিটিপি ট্র্যাফিক মনিটর স্ট্যাকওভারফ্লো ডটকম এ HTTP প্রতিক্রিয়া শিরোনাম দেখায়

আমি ফাইল ডাউনলোডগুলিতে সেই শিরোনামগুলি সেট করতে চাই

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


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

16
সম্ভবত আপনার পরীক্ষার পদ্ধতিটি ভুল ছিল। পৃষ্ঠাটি ইতিমধ্যে ক্যাশে ছিল? হতে পারে শিরোনামগুলি ভুল / ওভাররিডেন ছিল? আপনি কি ভুল অনুরোধটি দেখছিলেন? ইত্যাদি ..
বালুসসি 15'10

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

21
আমি যুক্ত করতে চাই যে এটি মূলত ব্যাংক অফ আমেরিকা করে। যদি আপনি তাদের প্রতিক্রিয়া শিরোনামগুলি দেখে থাকেন এবং এটিকে এসপেক্সে অনুবাদ করেন তবে তারা করছেন: রেসপন্স.এপেন্ডহাইডার ("ক্যাশে-নিয়ন্ত্রণ", "নো-ক্যাশে, কোনও দোকান নেই, অবশ্যই পুনঃনির্মাণ"); প্রতিক্রিয়া.এপেন্ডহাইডার ("মেয়াদউত্তীর্ণ", "থু, 01 ডিসেম্বর 1994 16:00:00 জিএমটি"); আমি অনুমান করি, এটি যদি তাদের পক্ষে যথেষ্ট ভাল হয় তবে তা আমার পক্ষে যথেষ্ট ভাল।
জন

8
@ জন: এটির শিরোনামের মেয়াদ শেষ হ'ল HTTP 1.0 স্পেসিফিকেশনের উদাহরণ মান । এটি কাজ করে তবে ঠিক সেই টাইমস্ট্যাম্পটি গ্রহণ করা কিছুটা হাস্যকর।
বালুসসি

244

(আরে, সবাই: দয়া করে নির্বোধভাবে কেবল যে সমস্ত হেডার আপনি সন্ধান করতে পারেন তা অনুলিপি করুন এবং পেস্ট করবেন না)

প্রথমত, পিছনে বোতামের ইতিহাস কোনও ক্যাশে নয় :

তাজাতা মডেল (বিভাগ 4.2) অগত্যা ইতিহাস ব্যবস্থাগুলিতে প্রয়োগ হয় না। অর্থাৎ ইতিহাসের প্রক্রিয়াটির মেয়াদ শেষ হয়ে গেলেও পূর্বের উপস্থাপনাটি প্রদর্শন করতে পারে।

পুরানো এইচটিটিপি অনুচ্ছেদে শব্দটি আরও শক্তিশালী ছিল, স্পষ্টভাবে ব্রাউজারগুলিকে ব্যাক বোতামের ইতিহাসের ক্যাশে নির্দেশনা অবজ্ঞা করতে বলে telling

পিছনে ফিরে (সময় যখন সময় পর্যন্ত ব্যবহারকারী মধ্যে যেতে অনুমিত হয় ছিল লগ ইন)। এটি পূর্বে খোলা URL- তে নেভিগেট করে না।

তবে, বাস্তবে, ক্যাশে খুব নির্দিষ্ট পরিস্থিতিতে ব্যাক বোতামটিকে প্রভাবিত করতে পারে:

  • পৃষ্ঠাটি অবশ্যই HTTPS- র মাধ্যমে সরবরাহ করা উচিত , অন্যথায় এই ক্যাশে-বস্টিং নির্ভরযোগ্য হবে না। এছাড়াও, আপনি যদি এইচটিটিপিএস ব্যবহার না করে থাকেন তবে আপনার পৃষ্ঠাটি অন্য অনেক উপায়ে লগইন চুরির ক্ষেত্রে ঝুঁকিপূর্ণ।
  • আপনাকে অবশ্যই প্রেরণ করতে হবে Cache-Control: no-store, must-revalidate(কিছু ব্রাউজার পর্যবেক্ষণ করে no-storeএবং কিছু পর্যবেক্ষণ করে must-revalidate)

আপনার কখনই কোনও প্রয়োজন নেই:

  • <meta>ক্যাশে শিরোনাম সহ - এটি মোটেই কাজ করে না। সম্পূর্ণ অকেজো।
  • post-check/ pre-check- এটি কেবলমাত্র কেবল সাশ্রয়ী সংস্থানগুলিতে প্রযোজ্য কেবলমাত্র নির্দেশিকা ।
  • দু'বার বা ডজন অংশে একই শিরোনাম প্রেরণ। কিছু পিএইচপি স্নিপেটগুলি প্রকৃতপক্ষে পূর্ববর্তী শিরোনামগুলি প্রতিস্থাপন করে, যার ফলস্বরূপ কেবল শেষ একটি প্রেরণ করা হয়।

আপনি যদি চান, আপনি যোগ করতে পারেন:

  • no-cacheবা max-age=0, যা রিসোর্স (ইউআরএল) "বাসি" করে তুলবে এবং নতুন সংস্করণ রয়েছে কিনা তা সার্ভারের সাথে ব্রাউজারগুলি পরীক্ষা করার প্রয়োজন ( no-storeইতিমধ্যে এটি আরও শক্তিশালী বোঝায়)।
  • Expiresএইচটিটিপি / ১.০ ক্লায়েন্টদের জন্য অতীতের একটি তারিখ সহ (যদিও সত্যিকারের এইচটিটিপি / ১.০-এর ক্লায়েন্টগুলি আজকাল সম্পূর্ণ অস্তিত্বহীন)।

বোনাস: নতুন এইচটিটিপি ক্যাচিং আরএফসি


1
এটি কি লোডিং সময়ের ক্ষেত্রে ওয়েবসাইটের পারফরম্যান্সের কোনও পার্শ্ব-প্রতিক্রিয়া ফেলবে? কীভাবে কোনও স্টোর, নো-ক্যাশে, পুনর্নির্মাণ অবশ্যই সম্পাদন করবে?
রমন ঘাই

@ রমনঘাই ক্যাশে অক্ষম করা সাধারণত কার্যকারিতা ব্যথা করে (এবং সমস্ত 3 টি বিকল্প আপনি ক্যাশে অক্ষম করেছেন বলে উল্লেখ করেছেন)। এটি সিডিএন এবং আইএসপি প্রক্সিগুলি (উদাহরণস্বরূপ মোবাইল অপারেটরদের দ্বারা ব্যবহৃত সাধারণত) অকার্যকর করতে পারে। এটি কোনও নতুন ব্যবহারকারীর দ্বারা প্রথম বোঝার ক্ষতি করে না (প্রক্সি ইস্যুটি বাদ দিয়ে) তবে পরবর্তী ন্যাভিগেশনটি অনেক ধীর হতে পারে।
কর্নেল

@ আপনি জানেন যে আমাদের অবশ্যই পাঠাতে হবে Cache-Control: must-revalidate। কেন পাঠানো Cache-Control: no-cacheযেহেতু no-cacheইতিমধ্যে বোঝা must-revalidate? w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1
পেসারিয়ার

3
@Pacerier সম্পর্ক no-cacheসঙ্গে must-revalidateক্যাশের সত্য, কিন্তু ফিরে ইতিহাস ক্যাশে নয়। ইতিহাসের আচরণ নিয়ন্ত্রণের জন্য ব্রাউজারগুলি বিশেষ-কেস স্পষ্টmust-revalidate
কর্নেল

@ পোর্নেল, এইচএমএম কি এমন একটি সমর্থনকারী আরএফসি রয়েছে যা জানায় যে এটি পছন্দসই আচরণ?
পেসারিয়ার

103

@ কর্নেল যেমন বলেছে, আপনি যা চান তা ক্যাশে নিষ্ক্রিয় করা নয়, তবে ইতিহাসের বাফারটিকে নিষ্ক্রিয় করা। ইতিহাসের বাফারটি অক্ষম করার জন্য বিভিন্ন ব্রাউজারের নিজস্ব সূক্ষ্ম উপায় রয়েছে।

ক্রোমে (v28.0.1500.95 মি) আমরা কেবল এটির মাধ্যমে করতে পারি Cache-Control: no-store

ফায়ারফক্সে (v23.0.1) এর মধ্যে যে কোনও একটি কাজ করবে:

  1. Cache-Control: no-store

  2. Cache-Control: no-cache (কেবলমাত্র https)

  3. Pragma: no-cache (কেবলমাত্র https)

  4. Vary: * (কেবলমাত্র https)

অপেরাতে (v12.15) আমরা কেবল এটি করতে পারি Cache-Control: must-revalidate(কেবলমাত্র https)।

সাফারিতে (v5.1.7, 7534.57.2) এর মধ্যে যে কোনও একটি কাজ করবে:

  1. Cache-Control: no-store
    <body onunload=""> এইচটিএমএলে

  2. Cache-Control: no-store (কেবলমাত্র https)

আইই 8 তে (v8.0.6001.18702IC) এর মধ্যে যে কোনও একটি কাজ করবে:

  1. Cache-Control: must-revalidate, max-age=0

  2. Cache-Control: no-cache

  3. Cache-Control: no-store

  4. Cache-Control: must-revalidate
    Expires: 0

  5. Cache-Control: must-revalidate
    Expires: Sat, 12 Oct 1991 05:00:00 GMT

  6. Pragma: no-cache (কেবলমাত্র https)

  7. Vary: * (কেবলমাত্র https)

উপরের সংমিশ্রণটি আমাদেরকে এই সমাধান দেয় যা ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7 এবং অপেরা 12.15: Cache-Control: no-store, must-revalidate (কেবলমাত্র https) জন্য কাজ করে

দ্রষ্টব্য যে https প্রয়োজন কারণ অপেরা সরল HTTP পৃষ্ঠাগুলির জন্য ইতিহাসের বাফারটিকে নিষ্ক্রিয় করবে না। আপনি যদি সত্যিই https পেতে না পারেন এবং আপনি অপেরা উপেক্ষা করার জন্য প্রস্তুত থাকেন তবে আপনি সবচেয়ে ভাল যা করতে পারেন তা হ'ল:

Cache-Control: no-store
<body onunload="">

নীচে আমার পরীক্ষাগুলির কাঁচা লগগুলি দেখায়:

HTTP- র:

  1. Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    ব্যর্থ: অপেরা 12.15
    সাফল্য: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7

  2. Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    ব্যর্থ: অপেরা 12.15
    সাফল্য: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7

  3. Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    ব্যর্থ: সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: ক্রোম 28, ফায়ারফক্স 23, আইই 8

  4. Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    ব্যর্থ: সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: ক্রোম 28, ফায়ারফক্স 23, আইই 8

  5. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: আইই 8

  6. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: আইই 8

  7. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: আইই 8

  8. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: আইই 8

  9. Cache-Control: no-store
    ব্যর্থ: সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: ক্রোম 28, ফায়ারফক্স 23, আইই 8

  10. Cache-Control: no-store
    <body onunload="">
    ব্যর্থ: অপেরা 12.15
    সাফল্য: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7

  11. Cache-Control: no-cache
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: আইই 8

  12. Vary: *
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: কিছুই নয়

  13. Pragma: no-cache
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: কিছুই নয়

  14. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: আইই 8

  15. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: আইই 8

  16. Cache-Control: must-revalidate, max-age=0
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: আইই 8

  17. Cache-Control: must-revalidate
    Expires: 0
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: আইই 8

  18. Cache-Control: must-revalidate
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: আইই 8

  19. Cache-Control: private, must-revalidate, proxy-revalidate, s-maxage=0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: কিছুই নয়

https:

  1. Cache-Control: private, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    <body onunload="">
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: কিছুই নয়

  2. Cache-Control: private, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    <body onunload="">
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: কিছুই নয়

  3. Vary: *
    ব্যর্থ: ক্রোম 28, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: ফায়ারফক্স 23, আইই 8

  4. Pragma: no-cache
    ব্যর্থ: ক্রোম 28, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: ফায়ারফক্স 23, আইই 8

  5. Cache-Control: no-cache
    ব্যর্থ: ক্রোম 28, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: ফায়ারফক্স 23, আইই 8

  6. Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
    ব্যর্থ: ক্রোম 28, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: ফায়ারফক্স 23, আইই 8

  7. Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    ব্যর্থ: ক্রোম 28, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: ফায়ারফক্স 23, আইই 8

  8. Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    ব্যর্থ: ক্রোম 28, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: ফায়ারফক্স 23, আইই 8

  9. Cache-Control: must-revalidate
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7
    সাফল্য: অপেরা 12.15

  10. Cache-Control: private, must-revalidate, proxy-revalidate, s-maxage=0
    <body onunload="">
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7
    সাফল্য: অপেরা 12.15

  11. Cache-Control: must-revalidate, max-age=0
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7
    সাফল্য: আইই 8 , অপেরা 12.15

  12. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    ব্যর্থ: ক্রোম 28, সাফারি 5.1.7
    সাফল্য: ফায়ারফক্স 23, আইই 8, অপেরা 12.15

  13. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    ব্যর্থ: ক্রোম 28, সাফারি 5.1.7
    সাফল্য: ফায়ারফক্স 23, আইই 8, অপেরা 12.15

  14. Cache-Control: no-store
    ব্যর্থ: অপেরা 12.15
    সাফল্য: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7

  15. Cache-Control: private, no-cache, no-store, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    ব্যর্থ: অপেরা 12.15
    সাফল্য: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7

  16. Cache-Control: private, no-cache, no-store, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    ব্যর্থ: অপেরা 12.15
    সাফল্য: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7

  17. Cache-Control: private, no-cache
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    ব্যর্থ: ক্রোম 28, সাফারি 5.1.7, অপেরা 12.15
    সাফল্য: ফায়ারফক্স 23, আইই 8

  18. Cache-Control: must-revalidate
    Expires: 0
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7,
    সাফল্য: আইই 8 , অপেরা 12.15

  19. Cache-Control: must-revalidate
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7,
    সাফল্য: আইই 8 , অপেরা 12.15

  20. Cache-Control: private, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    <body onunload="">
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7,
    সাফল্য: আইই 8 , অপেরা 12.15

  21. Cache-Control: private, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    <body onunload="">
    ব্যর্থ: ক্রোম 28, ফায়ারফক্স 23, সাফারি 5.1.7,
    সাফল্য: আইই 8 , অপেরা 12.15

  22. Cache-Control: private, must-revalidate
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    ব্যর্থ: ক্রোম 28, সাফারি 5.1.7
    সাফল্য: ফায়ারফক্স 23, আইই 8, অপেরা 12.15

  23. Cache-Control: no-store, must-revalidate
    ব্যর্থ: কিছুই
    সাফল্য: ক্রোম 28, ফায়ারফক্স 23, আইই 8, সাফারি 5.1.7, অপেরা 12.15


3
আমি জানি এটি কয়েক বছর আগে পোস্ট করা হয়েছিল তবে এটি একটি আকর্ষণীয় পঠন ছিল। এই সমস্যাটি আমাকে কয়েক মাস ধরে পাগল করে চলেছে, দেহটি ক্যাশে নিয়ন্ত্রণের সাথে কীভাবে মোকাবেলা করতে হবে তা সত্যই জানে। আমি কয়েক জনকে এটি ব্যবহার করে দেখেছি <body onunload="">তবে এটি আসল সমস্যাটির আশেপাশের মতো মনে হচ্ছে। আমি .htaccess ব্যবহার করে এবং হেডারগুলিকে সেভাবে পরিবর্তন করার চেষ্টা করেছি, যদি আমি এইচটিটিপিএস ব্যবহার করি তবে কি সেভাবে কাজ করা উচিত? এটি মূলত সাফারি যেখানে সমস্যাটি সবচেয়ে বেশি দেখা দেয়।
জর্দান

4
@ জর্দান, উপরের লগগুলিতে আপনার যদি এইচটিটিপিএস থাকে তবে যোগ Cache-Control: no-storeকরার কৌশলটি করত। <body onunload="">যখন আপনার এইচটিটিপিএস নেই কেবল তখনই প্রয়োজন।
পেসারিয়ার

37

আমি ওয়েবকনফাইগ রুটটি দরকারী পেয়েছি (উত্তরে এটি যুক্ত করার চেষ্টা করেছি তবে মনে হয় না যে এখানে পোস্ট করার কারণে এটি গ্রহণ করা হয়েছে)

<configuration>
<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Cache-Control" value="no-cache, no-store, must-revalidate" />
            <!-- HTTP 1.1. -->
            <add name="Pragma" value="no-cache" />
            <!-- HTTP 1.0. -->
            <add name="Expires" value="0" />
            <!-- Proxies. -->
        </customHeaders>
    </httpProtocol>
</system.webServer>

এবং এখানে এক্সপ্রেস / নোড.জেএস একই পদ্ধতি করার উপায়:

app.use(function(req, res, next) {
    res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
    res.setHeader('Pragma', 'no-cache');
    res.setHeader('Expires', '0');
    next();
});

ওয়েবকনফাইগের জন্য আমি কেবলমাত্র সেই স্ক্রিপ্টগুলির জন্য কাস্টম শিরোনাম প্রয়োগ করতে কেবল কিছুটা পরিবর্তন করব যা আমরা জানি যে গতিশীলভাবে / প্রয়োজনীয়জ ব্যবহার করে লোড করা হয়। ধরে নিচ্ছি আপনার স্ক্রিপ্টগুলি ক্লায়েন্ট ফোল্ডারে পাওয়া গেছে: <অবস্থানের পথ = "ক্লায়েন্ট"> ..... </location>
ইব্রাহিম বেন সালাহ

কে কী web.confতা ভাবতে পারে : এটি কোনও ASP.NETওয়েব অ্যাপ্লিকেশনের জন্য মূল সেটিংস এবং কনফিগারেশন ফাইল । এটি একটি এক্সএমএল নথি যা মূল ডিরেক্টরিতে থাকে in ( উইকি )
আরেকটি

27

আমি দেখতে পেয়েছি যে এই পৃষ্ঠার সমস্ত উত্তরটিতে এখনও সমস্যা ছিল। বিশেষত, আমি লক্ষ্য করেছি যে আপনি পিছনের বোতামটি টিপে যখন এটিকে অ্যাক্সেস করেন তখন তাদের কেউই পৃষ্ঠার ক্যাশেড সংস্করণটি ব্যবহার করা আটকাবেন না।

অনেক গবেষণা এবং পরীক্ষার পরে, আমি দেখতে পেলাম যে সত্যই আমার দুটি মাত্র শিরোনাম ছিল:

ক্যাশে-নিয়ন্ত্রণ: নো-স্টোর বিভিন্ন
: *

ভেরি শিরোনামের ব্যাখ্যার জন্য http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.6 দেখুন

IE6-8, FF1.5-3.5, ক্রোম 2-3, সাফারি 4, এবং অপেরা 9-10- এ, এই পৃষ্ঠাগুলি আপনাকে পৃষ্ঠাটির কোনও লিঙ্কে ক্লিক করার সময়, বা URL- এ রাখার সময় সার্ভার থেকে পৃষ্ঠাটি অনুরোধ করার কারণ করেছিল caused সরাসরি ঠিকানা বারে। এটি প্রায় 99% কভার করে জানুয়ারী 10 হিসাবে ব্যবহারে সমস্ত ব্রাউজারগুলির ।

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

আপডেট: এই উত্তরটি লেখার পরে, আমি বুঝতে পারি যে আমাদের ওয়েব সার্ভার নিজেকে এইচটিটিপি 1.0 সার্ভার হিসাবে চিহ্নিত করছে। আমি যে শিরোনামটি তালিকাভুক্ত করেছি সেগুলি হ'ল ব্রাউজারগুলির দ্বারা ক্যাশে না হওয়ার জন্য কোনও HTTP 1.0 সার্ভারের প্রতিক্রিয়াগুলির জন্য ক্রম। এইচটিটিপি 1.1 সার্ভারের জন্য বালাসকের উত্তরটি দেখুন


4
এটি IE8 এর ব্যাক বোতামটির জন্য কাজ করে !! আফ্রিকার প্রতিটি পরামর্শ অনুসারে সমস্ত কিছু চেষ্টা করে "ভার্য: *" শিরোনাম যুক্ত করা বাহ্যত দৃশ্যত একমাত্র জিনিস যা ব্যবহারকারী ব্যাকটি বোতাম টিপলে আইই 8 পৃষ্ঠাটি পুনরায় লোড করতে বাধ্য করতে পারে। আর এই করে / 1.1 সার্ভার HTTP- র কাজ।
coredumperror

বার্লাসক দ্বারা প্রস্তাবিত শিরোলেখগুলির সাথে মিলিত, একটি জেএস স্নিপেট যা উইন্ডো.লোকেশন.রেলোডকে কল করে () যখন অনপেজশো ইভেন্টটি "অব্যাহত" বৈশিষ্ট্যটি (সাফারির জন্য প্রয়োজনীয়) দিয়ে ট্রিগার করে , আমি সফলভাবে পরীক্ষিত প্রতিটি ব্রাউজার থেকে পুনরায় লোড জোর করে সার্ভার যখন ব্যবহারকারী পিছনে বোতাম ব্যবহার করে।
coredumperror

1
@ কোরডাম্পআরর, ওহ আপনার জাভাস্ক্রিপ্ট সক্ষম হয়েছে বলে ধরে নেওয়া উচিত নয়।
পেসারিয়ার

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

আপনি যা পরীক্ষা করেছেন সেই ব্রাউজারের সংস্করণগুলি কী ছিল?
পেসারিয়ার

21

কিছুটা গবেষণা করার পরে আমরা নিম্নলিখিত শিরোনামগুলির তালিকা নিয়ে এসেছি যা বেশিরভাগ ব্রাউজারগুলিকে কভার করে বলে মনে হয়েছিল:

এএসপি.নেটে আমরা নিম্নলিখিত স্নিপেট ব্যবহার করে এগুলি যুক্ত করেছি:

Response.ClearHeaders(); 
Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1 
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0 
Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.0 

থেকে পাওয়া: http://forums.asp.net/t/1013531.aspx


35
@ বার্ট: আরও বেশি সমস্যাজনক যে 1997 সালের 26 জুলাই শনিবার ছিল, সোমবার নয় ...
সিআর

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

প্রাক-চেক এবং পোস্ট-চেক ব্যবহার করবেন না। ব্লগস.এমএসডিএন
বি /

এটি আমার পক্ষে কার্যকর হয়নি - কোডটি রান করে এএসপিএন ৪.৫ ব্যবহার করে তবে প্রয়োজনীয় ফলাফল তৈরি করে না। আমাকে এটি অনুসরণ করতে হয়েছিল: stackoverflow.com/questions/22443932/…
অ্যান্ডি

8

প্রতিক্রিয়াটিতে প্রাগমা শিরোনামের ব্যবহার একটি স্ত্রীদের কাহিনী। আরএফসি 2616 এটি কেবল একটি অনুরোধ শিরোনাম হিসাবে সংজ্ঞায়িত করে

http://www.mnot.net/cache_docs/#PRAGMA


4
আপনার চশমা ছাড়িয়ে কেন যেতে হবে এটি এটির একটি ভাল উদাহরণ is যদি চশমাগুলি সর্বদা স্ফটিক পরিষ্কার থাকে তবে স্ট্যাকওভারফ্লোয়ের মতো সাইটের পক্ষে খুব বেশি পয়েন্ট থাকবে না। মাইক্রোসফ্ট থেকে এইচটিটিপি 1.0 সার্ভারের সাথে পশ্চাদপটে সামঞ্জস্যের উদ্দেশ্যে, ইন্টারনেট এক্সপ্লোরার এইচটিটিপি প্রগমা: নো-ক্যাশে শিরোনামের একটি বিশেষ ব্যবহারকে সমর্থন করে। ক্লায়েন্ট যদি কোনও সুরক্ষিত সংযোগ (https: //) এর মাধ্যমে সার্ভারের সাথে যোগাযোগ করে এবং সার্ভার একটি প্রাগমা: নো-ক্যাশে শিরোনামের সাথে শিরোনাম দেয়, ইন্টারনেট এক্সপ্লোরার প্রতিক্রিয়াটিকে ক্যাশে করে না।
মাইকেলোকল

@ মাইকেল: আপনার রেফারেন্সটি বৈধ, তবে বৃহত্তর পয়েন্টটি মিস করে - একটি সঠিক ক্যাশে-নিয়ন্ত্রণ / মেয়াদ নির্ধারণ করুন এবং আপনার প্রাগমা লাগবে না।
এরিকল

8

অস্বীকৃতি: আমি @ বালাসকের উত্তরটি পড়ার দৃ strongly় পরামর্শ দিচ্ছি। নিম্নলিখিত ক্যাশিং টিউটোরিয়ালটি পড়ার পরে: http://www.mnot.net/cache_docs/ (আমি আপনাকে এটি পড়ারও পরামর্শ দিই), আমি বিশ্বাস করি এটি সঠিক। তবে, reasonsতিহাসিক কারণে (এবং কারণ আমি নিজে এটি পরীক্ষা করেছি), আমি নীচে আমার মূল উত্তরটি অন্তর্ভুক্ত করব:


আমি পিএইচপি-র জন্য 'গৃহীত' উত্তর চেষ্টা করেছি, যা আমার পক্ষে কার্যকর হয়নি। তারপরে আমি কিছুটা গবেষণা করেছি, কিছুটা বৈকল্পিক পেয়েছি, এটি পরীক্ষা করেছি এবং এটি কার্যকর হয়েছে। এটা এখানে:

header('Cache-Control: no-store, private, no-cache, must-revalidate');     // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false);  // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');                  // Date in the past  
header('Expires: 0', false); 
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header ('Pragma: no-cache');

এটা কাজ করা উচিত। সমস্যাটি হ'ল শিরোনামের একই অংশটি দু'বার সেট করার সময়, যদি falseশিরোনাম ফাংশনে দ্বিতীয় আর্গুমেন্ট হিসাবে প্রেরণ না করা হয়, তবে শিরোনাম ফাংশনটি পূর্ববর্তী header()কলটি ওভাররাইট করে । সুতরাং, সেট করার সময় Cache-Control, উদাহরণস্বরূপ, যদি কেউ সমস্ত আর্গুমেন্টকে একটি header()ফাংশন কলে রাখতে চান না, তাকে অবশ্যই এই জাতীয় কিছু করতে হবে:

header('Cache-Control: this');
header('Cache-Control: and, this', false);

আরও সম্পূর্ণ ডকুমেন্টেশন এখানে দেখুন


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

1
@ পার্নেল, আপনি কি এমন প্রতিযোগিতামূলক উত্তর জমা দিবেন যা এই পৌরাণিক কাহিনী সঠিকভাবে মোকাবেলা করে?
অদ্ভুতভাবে ভাবনা

@Oddthinking, মত দেখাচ্ছে stackoverflow.com/questions/49547/... একটি প্রতিদ্বন্দ্বী উত্তর।
মাইক অটুম

@ পেসারিয়র হ্যাঁ, আমি অস্বীকারমুক্তিতে যেমন বলেছি, বালাসকের উত্তরটি ব্যবহার করুন।
স্টিভেন অক্সলে

8

এএসপি.নেট কোরের জন্য, একটি সাধারণ মিডলওয়্যার শ্রেণি তৈরি করুন:

public class NoCacheMiddleware
{
    private readonly RequestDelegate m_next;

    public NoCacheMiddleware( RequestDelegate next )
    {
        m_next = next;
    }

    public async Task Invoke( HttpContext httpContext )
    {
        httpContext.Response.OnStarting( ( state ) =>
        {
            // ref: http://stackoverflow.com/questions/49547/making-sure-a-web-page-is-not-cached-across-all-browsers
            httpContext.Response.Headers.Append( "Cache-Control", "no-cache, no-store, must-revalidate" );
            httpContext.Response.Headers.Append( "Pragma", "no-cache" );
            httpContext.Response.Headers.Append( "Expires", "0" );
            return Task.FromResult( 0 );
        }, null );

        await m_next.Invoke( httpContext );
    }
}

তারপরে এটি নিবন্ধ করুন Startup.cs

app.UseMiddleware<NoCacheMiddleware>();

আপনি এটি পরে কোথাও যুক্ত করেছেন তা নিশ্চিত করুন

app.UseStaticFiles();

আমি মাইক্রোসফ্টের কাছ থেকে ধ্রুবক ব্যবহার করার পরামর্শ দেব et নেট.এইচটি.পি.হেইডার্স.হাইডারনামগুলি স্ট্রিং লিটারেলের পরিবর্তে "ক্যাশে-নিয়ন্ত্রণ", "প্রগমা" এবং "মেয়াদ শেষ হবে" of
ভিক্টর শরোভাতভ

7

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

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


7

আই 6 এ একটি বাগ আছে g

"বিষয়বস্তু-এনকোডিং: gzip" সহ সামগ্রীটি আপনি "ক্যাশে-নিয়ন্ত্রণ: নো-ক্যাশে" ব্যবহার করলেও সর্বদা ক্যাশে থাকে।

http://support.microsoft.com/kb/321722

আপনি আই 66 ব্যবহারকারীদের জন্য জিপআইপি সংক্ষেপণ অক্ষম করতে পারেন ("এমএসআইই 6" এর জন্য ব্যবহারকারী এজেন্টটি পরীক্ষা করুন)


6

এইচটিটিপি ১.১-এর জন্য আরএফসি বলছে সঠিক পদ্ধতিটি এর জন্য এইচটিটিপি শিরোনাম যুক্ত করা:

ক্যাশে-নিয়ন্ত্রণ: নো-ক্যাশে

পুরানো ব্রাউজারগুলি এটিকে HTTP 1.1 এর যথাযথভাবে মেনে চলতে না পারলে এটিকে এড়িয়ে যেতে পারে। তাদের জন্য আপনি শিরোনাম চেষ্টা করতে পারেন:

প্রগমা: নো-ক্যাশে

এটি HTTP 1.1 ব্রাউজারগুলির জন্যও কাজ করার কথা রয়েছে।


1
অনুমানটি নির্দেশ করে যে প্রতিক্রিয়া পুনর্নির্মাণ ব্যতীত পুনরায় ব্যবহার করা উচিত নয়। এটি ক্যাশে-নিয়ন্ত্রণ: নো-স্টোর যা কোনও সরকারী পদ্ধতি যা নির্দেশ করে যে প্রতিক্রিয়া এমনকি প্রথম স্থানে একটি ক্যাশেও সংরক্ষণ করা হয় না।
অ্যান্টনিডব্লু জোন্স

6

1995 সালে কিছু তারিখে পরিবর্তিত HTTP শিরোনাম সেট করা সাধারণত কৌশলটি করে।

এখানে একটি উদাহরণ:

মেয়াদ শেষ: বুধ, 15 নভেম্বর 1995 04:58:08 GMT
শেষবার সংশোধিত: বুধবার, 15 নভেম্বর 1995 04:58:08 GMT
ক্যাশে-নিয়ন্ত্রণ: নো-ক্যাশে, অবশ্যই পুনরায় চালু করতে হবে

1
দীর্ঘ-পূর্বের সর্বশেষ-সংশোধিত সেট করা ক্যাশিংয়ের উপর কোনও প্রভাব ফেলবে না, হিউরিস্টিক পুনর্বিবেচনার কারণে কোনও ক্যাশেড প্রতিক্রিয়াটিকে বেশি দিন ব্যবহার করা দেওয়া ছাড়া।
এরিকল

6

হেডার ফাংশন জন্য পিএইচপি ডকুমেন্টেশন বরং একটি সম্পূর্ণ উদাহরণঃ (কোনো তৃতীয় পক্ষ দ্বারা অবদান) আছে:

    header('Pragma: public');
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");                  // Date in the past   
    header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
    header('Cache-Control: no-store, no-cache, must-revalidate');     // HTTP/1.1
    header('Cache-Control: pre-check=0, post-check=0, max-age=0', false);    // HTTP/1.1
    header ("Pragma: no-cache");
    header("Expires: 0", false);

11
এটা স্পষ্টতই ভুল। মেয়াদ উত্তীর্ণের জন্য শিরোনামে দ্বিতীয় কল (), ক্যাশে-নিয়ন্ত্রণ এবং প্রাগমা পূর্বে সেট করা মানগুলি সম্পূর্ণরূপে ওভাররাইট করে।
কর্নেল

1
@ পার্নেল: না পূর্বের সেট মানগুলিকে ওভাররাইট করবেন না কারণ তিনি 2 য় প্যারামিটার হিসাবে মিথ্যা পাস করেছেন, আগের মানগুলিকে ওভাররাইড না করতে বলছেন।
জুলিয়েন পালার্ড

1
@ জুলিয়ানপালার্ড উত্তরটি আমার মন্তব্য করার পরে সম্পাদিত হয়েছে। এটি এখনও খুব একটা বোঝায় না।
কর্নেল

আপনি যদি ৯ এর আগে IE এ কাজ করতে চান তবে একাধিক ক্যাশে-নিয়ন্ত্রণ শিরোনামগুলি প্রেরণ করবেন না pre কখনও প্রাক-চেক বা পোস্ট-চেক প্রেরণ করবেন না। ব্লগস.এমএসডন.কম
আর্কিভ /

6

আপনি যদি এসএসএল এবং ক্যাশে আইআই--আইইইউ ডাউনলোডের সমস্যার মুখোমুখি হন: এমএস অফিস ফাইলগুলির সাথে নো-ক্যাশে শিরোনাম (এবং অনুরূপ মান) আপনি ক্যাশে ব্যবহার করতে পারেন: ব্যক্তিগত, নো-স্টোর শিরোনাম এবং পোস্টের অনুরোধে ফাইল রিটার্ন করুন। এটা কাজ করে।


6

আমার ক্ষেত্রে আমি এটির সাথে ক্রোমের সমস্যাটি সমাধান করি

<form id="form1" runat="server" autocomplete="off">

সুরক্ষার কারণে যখন ব্যবহারকারীরা ফিরে বোতামটি ক্লিক করেন তখন আমাকে প্রিভিয়াস ফর্ম ডেটার সামগ্রীটি সাফ করা দরকার


আমার মোজিলা 19.x ব্রাউজার সমস্যাটি কোড স্নিপেট দ্বারাও সমাধান হয়ে গেছে। স্বয়ংসম্পূর্ণ = "বন্ধ"। ধন্যবাদ.
সত্য

5

গৃহীত উত্তরটি আইআইএস 7+ এর জন্য কাজ করে না, III তে ক্যাশে শিরোনাম পাঠানো হচ্ছে না এমন বিপুল সংখ্যক প্রশ্ন রেখে:

ইত্যাদি

গৃহীত উত্তরটি সঠিক যেখানে কোন শিরোনাম সেট করা উচিত, তবে সেগুলি কীভাবে সেট করা উচিত তা নয়। এই ভাবে IIS7 এর সাথে কাজ করে:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.AppendCacheExtension("no-store, must-revalidate");
Response.AppendHeader("Pragma", "no-cache");
Response.AppendHeader("Expires", "-1");

প্রথম লাইনটি সেট Cache-controlকরে no-cacheএবং দ্বিতীয় লাইনটি অন্যান্য বৈশিষ্ট্য যুক্ত করেno-store, must-revalidate


এটি আমার জন্য কাজ করে:Response.Cache.SetAllowResponseInBrowserHistory(false); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetNoStore(); Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
ভিলক্স-

4

প্রাগমা: নো-ক্যাশে সেট করে আমি সমস্ত ব্রাউজার জুড়ে সেরা এবং সর্বাধিক ধারাবাহিক ফলাফল পেয়েছি


4

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

<body onunload=""> 

এই হ্যাকটি স্পষ্টতই সাফারিতে ব্যাক-ফরোয়ার্ড ক্যাশেটি ভেঙে দিয়েছে: পিছনের বোতামটি ক্লিক করার সময় ক্রস-ব্রাউজারের লোডের ইভেন্ট রয়েছে?


দুর্দান্ত, আমি এটি পরীক্ষা করেছি এবং এটি আসলে সাফারি (5.1.7) এ কাজ করে তবে অপেরা নয়।
পেসিয়ার

4

এছাড়াও, কেবলমাত্র ভাল পরিমাপের জন্য, আপনি যদি ক্যাচিং সক্ষম করতে ব্যবহার করেন তবে ExpiresDefaultআপনার .htaccessফাইলটিতে রিসেটটি নিশ্চিত করুন।

ExpiresDefault "access plus 0 seconds"

এরপরে, আপনি ExpiresByTypeযে ফাইলগুলি ক্যাশে করতে চান তার জন্য নির্দিষ্ট মান নির্ধারণ করতে আপনি ব্যবহার করতে পারেন :

ExpiresByType image/x-icon "access plus 3 month"

আপনার ডায়নামিক ফাইলগুলি যেমন পিএইচপি ইত্যাদি ব্রাউজার দ্বারা ক্যাশে হচ্ছে এবং এটি কেন তা বুঝতে পারছেন না যদি এটি কার্যকর হয়। চেক ExpiresDefault


3

শিরোনাম ছাড়াও https এর মাধ্যমে আপনার পৃষ্ঠাটি পরিবেশন করার বিষয়টি বিবেচনা করুন । অনেক ব্রাউজার ডিফল্টরূপে https ক্যাশে করবে না।


3
//In .net MVC
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult FareListInfo(long id)
{
}

// In .net webform
<%@ OutputCache NoStore="true" Duration="0" VaryByParam="*" %>

2

বালুসসি -> উত্তর সম্পূর্ণ করতে আপনি যদি পার্ল ব্যবহার করছেন তবে আপনি এইচটিটিপি শিরোনাম যুক্ত করতে সিজিআই ব্যবহার করতে পারেন।

পার্ল ব্যবহার:

Use CGI;    
sub set_new_query() {
        binmode STDOUT, ":utf8";
        die if defined $query;
        $query = CGI->new();
        print $query->header(
                        -expires       => 'Sat, 26 Jul 1997 05:00:00 GMT',
                        -Pragma        => 'no-cache',
                        -Cache_Control => join(', ', qw(
                                            private
                                            no-cache
                                            no-store
                                            must-revalidate
                                            max-age=0
                                            pre-check=0
                                            post-check=0 
                                           ))
        );
    }

অ্যাপাচি httpd.conf ব্যবহার করা

<FilesMatch "\.(html|htm|js|css|pl)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>

দ্রষ্টব্য: আমি যখন এইচটিএমএল মেটা ব্যবহার করার চেষ্টা করেছি তখন ব্রাউজারগুলি সেগুলি উপেক্ষা করে পৃষ্ঠাটি ক্যাশে করে।


0

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

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

এটি বেশ সুস্পষ্ট, তবুও উল্লেখ করার মতো।

এবং অন্য সাবধানতা। HttpResponse ক্লাস থেকে ক্লিয়ারহাইডার্স পদ্ধতিটি ব্যবহারে সতর্কতা অবলম্বন করুন। যদি আপনি এটিকে বেপরোয়াভাবে ব্যবহার করেন তবে এটি আপনাকে কিছুটা আঘাত দিতে পারে। এটা আমাকে দিয়েছে।

অ্যাকশনফিলারঅ্যাট্রিবিউট ইভেন্টে পুনঃনির্দেশের পরে সমস্ত শিরোনাম সাফ করার ফলাফল টেম্পডাটা স্টোরেজে সমস্ত সেশন ডেটা এবং ডেটা হারাচ্ছে। কোনও অ্যাকশন থেকে পুনর্নির্দেশ করা নিরাপদ বা পুনর্নির্দেশটি হ'ল যখন হেডারগুলি সাফ করবেন না।

দ্বিতীয় ভাবাতে আমি ক্লিয়ারহাইডার্স পদ্ধতিটি ব্যবহার করতে সবাইকে নিরুৎসাহিত করি। আলাদাভাবে শিরোলেখ অপসারণ করা ভাল। এবং সঠিকভাবে ক্যাশে-নিয়ন্ত্রণ শিরোনাম সেট করতে আমি এই কোডটি ব্যবহার করছি:

filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.AppendCacheExtension("no-store, must-revalidate");

0

<head><meta>উপাদানগুলির সাথে আমার ভাগ্য ছিল না । সরাসরি এইচটিটিপি ক্যাশে সম্পর্কিত পরামিতি যুক্ত করা (এইচটিএমএল ডকের বাইরে) সত্যই আমার পক্ষে কাজ করে।

ওয়েব.পি web.headerকলগুলি ব্যবহার করে পাইথনের নমুনা কোডটি অনুসরণ করে। আমি উদ্দেশ্যমূলকভাবে আমার ব্যক্তিগত অপ্রাসঙ্গিক ইউটিলিটি কোডটি redacted করেছি।

    আমদানি ওয়েব
    আমদানি sys
    ব্যক্তিগত-শুল্কগুলি আমদানি করুন

    myname = "main.py"

    urls = (
        '/', 'প্রধান_ক্লাস'
    )

    প্রধান = ওয়েব.অ্যাপ্লিকেশন (ইউআরএল, গ্লোবাল ())

    রেন্ডার = ওয়েব.টেম্পলেট.রেেন্ডার ("টেম্পলেট /", বেস = "লেআউট", ক্যাশে = মিথ্যা)

    শ্রেণীর প্রধান_ক্লাস (অবজেক্ট):
        ডিফ জিইটি (স্ব):
            ওয়েব.হেডার ("ক্যাশে-নিয়ন্ত্রণ", "নো-ক্যাশে, নো-স্টোর, অবশ্যই পুনঃনির্মাণ")
            ওয়েব.হেডার ("প্রগমা", "নো-ক্যাশে")
            ওয়েব.হেডার ("মেয়াদ শেষ", "0")
            ফেরত দিন

        Def পোষ্ট (স্ব):
            msg = "পোস্ট করা:"
            ফর্ম = ওয়েবডিনপুট (ফাংশন = কিছুই নয়)
            ওয়েব.হেডার ("ক্যাশে-নিয়ন্ত্রণ", "নো-ক্যাশে, নো-স্টোর, অবশ্যই পুনঃনির্মাণ")
            ওয়েব.হেডার ("প্রগমা", "নো-ক্যাশে")
            ওয়েব.হেডার ("মেয়াদ শেষ", "0")
            retend.index_laid_out (শুভেচ্ছা = msg + form.function)

    যদি __ নাম__ == "__ মেইন__":
        ন্যাং = লেন (sys.argv)
        # অজগর প্রোগ্রামের নামের পরে পর্যাপ্ত যুক্তি রয়েছে তা নিশ্চিত করুন
        যদি নার্গস! = 2:
            লগ-অ্যান্ড-ডিআইই ("% s: কমান্ড লাইনের ত্রুটি, নার্গেস =% s, 2" হওয়া উচিত, আমার নাম, ন্যারেজ)
        # নিশ্চিত হয়ে নিন যে টিসিপি পোর্ট নম্বরটি সংখ্যাযুক্ত
        চেষ্টা করে দেখুন:
            tcp_port = int (sys.argv [1])
        ই হিসাবে ব্যতিক্রম ব্যতীত:
            লগ-অ্যান্ড-ডিআইই ("% s: tcp_port = int (% s) ব্যর্থ হয়েছে (কোনও পূর্ণসংখ্যা নয়)", মাইনেম, sys.argv [1])
        # সবকিছু ঠিক আছে!
        JUST-LOG ("% s:% d পোর্টে চলছে", আমার নাম, tcp_port)
        web.httpserver.runsimple (main.wsgifunc (), ("লোকালহোস্ট", tcp_port))
        main.run ()


বছরের পর বছর ধরে সাইটে থাকা উত্তরগুলিতে এটি কি ইতিমধ্যে বহুবার আচ্ছাদিত নয়?
মার্টিন টর্নয়েজ

মেটার নির্দেশাবলী ইন্টারনেট এক্সপ্লোরার এবং এজ 18 এবং তার আগের সংস্করণগুলিতে কাজ করে। আধুনিক ব্রাউজারগুলি তাদের সমর্থন করে না। crbug.com/2763
এরিকলু

0

ক্যাচিংয়ের ক্ষেত্রে কেস স্টাডির এই লিঙ্কটি দেখুন:

http://securityevaluators.com/knowledge/case_studies/caching/

সংক্ষিপ্ত বিবরণ অনুসারে, কেবল Cache-Control: no-storeক্রোম, ফায়ারফক্স এবং আইইতে কাজ করে। IE অন্যান্য নিয়ন্ত্রণগুলি স্বীকার করে তবে ক্রোম এবং ফায়ারফক্স তা গ্রহণ করে না। লিঙ্কটি ধারণার প্রমাণ এবং ডকুমেন্টিংয়ের প্রমাণের ইতিহাসের সাথে একটি ভাল পঠনযোগ্য।


0

আমার উত্তরটি সহজ এবং মূর্খ বলে মনে হচ্ছে না তা নিশ্চিত না এবং সম্ভবত এটি আপনার অনেক আগে থেকেই জানা ছিল তবে আপনার historicalতিহাসিক পৃষ্ঠাগুলি দেখার জন্য কাউকে ব্রাউজারের ব্যাক বোতাম ব্যবহার করা থেকে বিরত করা আপনার লক্ষ্যগুলির মধ্যে একটি, আপনি ব্যবহার করতে পারেন:

window.location.replace("https://www.example.com/page-not-to-be-viewed-in-browser-history-back-button.html");

অবশ্যই, এটি পুরো সাইট জুড়ে প্রয়োগ করা সম্ভব নাও হতে পারে তবে কমপক্ষে কিছু সমালোচনামূলক পৃষ্ঠাগুলির জন্য আপনি এটি করতে পারেন। আশাকরি এটা সাহায্য করবে.


-1

আইআইএস-এ ক্যাচিংয়ের জন্য পুরো অ্যাপ্লিকেশনটির পরিবর্তে আপনি সেটটি পৃথক ফাইলের জন্য অবস্থান ব্লক ব্যবহার করতে পারেন

 <location path="index.html">
    <system.webServer>
      <httpProtocol>
        <customHeaders>
          <add name="Cache-Control" value="no-cache" />
        </customHeaders>
      </httpProtocol>
    </system.webServer>
  </location>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.