ক্যাশিং কেন কাজ করছে সে সম্পর্কে আপনার প্রশ্নের উত্তর দিতে, যদিও ওয়েব-সার্ভারে শিরোনাম অন্তর্ভুক্ত করা হয়নি:
- মেয়াদ শেষ:
[a date]
- ক্যাশে-নিয়ন্ত্রণ: সর্বাধিক বয়স =
[seconds]
সার্ভার দয়া করে কোনও মধ্যবর্তী প্রক্সিগুলিকে বিষয়বস্তুগুলি ক্যাশে না করার জন্য অনুরোধ জানিয়েছিল (অর্থাত্ আইটেমটি কেবলমাত্র একটি ব্যক্তিগত ক্যাশে ক্যাশ করা উচিত, শুধুমাত্র আপনার নিজের স্থানীয় মেশিনে):
- ক্যাশে-নিয়ন্ত্রণ: ব্যক্তিগত
তবে সার্ভার কোনও ধরণের ক্যাশে করার ইঙ্গিতগুলি অন্তর্ভুক্ত করতে ভুলে গেছে:
- তারা মেয়াদ শেষ করতে ভুলে গিয়েছিল , তাই ব্রাউজারটি সেই তারিখ পর্যন্ত ক্যাশেড অনুলিপিটি ব্যবহার করতে জানে knows
- তারা সর্বোচ্চ-বয়স অন্তর্ভুক্ত করতে ভুলে গিয়েছিল , তাই ব্রাউজারটি জানে যে ক্যাশেড আইটেমটি কতক্ষণ ভাল
- তারা ই-ট্যাগ অন্তর্ভুক্ত করতে ভুলে গেছে , তাই ব্রাউজারটি শর্তযুক্ত অনুরোধ করতে পারে
তবে তারা প্রতিক্রিয়াতে একটি সর্বশেষ-পরিবর্তিত তারিখ অন্তর্ভুক্ত করেছে:
Last-Modified: Tue, 16 Oct 2012 03:13:38 GMT
যেহেতু ব্রাউজারটি ফাইলটি পরিবর্তিত হওয়ার তারিখটি জানে তাই এটি শর্তযুক্ত অনুরোধ সম্পাদন করতে পারে । এটি সার্ভারকে ফাইলটির জন্য জিজ্ঞাসা করবে, তবে সার্ভারকে কেবলমাত্র ফাইলটি প্রেরণের নির্দেশ দিবে যদি এটি ২০১২/১০/১ 3 3:13:38 থেকে সংশোধিত হয়েছে:
GET / HTTP/1.1
If-Modified-Since: Tue, 16 Oct 2012 03:13:38 GMT
সার্ভারটি অনুরোধটি গ্রহণ করে, বুঝতে পারে যে ক্লায়েন্টটির ইতিমধ্যে অতি সাম্প্রতিকতম সংস্করণ রয়েছে। 200 OK
পৃষ্ঠার বিষয়বস্তু অনুসরণ করে ক্লায়েন্টকে প্রেরণ করার পরিবর্তে এটি আপনাকে বলবে যে আপনার ক্যাশেড সংস্করণটি ভাল:
304 Not Modified
আপনার ব্রাউজারটিকে সার্ভারে একটি অনুরোধ প্রেরণে বিলম্ব ভোগ করতে হবে এবং প্রতিক্রিয়াটির জন্য অপেক্ষা করতে হবে, তবে এটি স্থির সামগ্রীটি পুনরায় ডাউনলোড করতে বাঁচাতে পারে না।
সর্বোচ্চ বয়স কেন ? কেন মেয়াদ শেষ ?
কারণ সর্বশেষ-পরিবর্তিত স্তন্যপান।
সার্ভারে সবকিছু না হয়েছে এর সাথে জড়িত একটি তারিখ। আমি যদি উড়তে একটি পৃষ্ঠা তৈরি করি তবে এর সাথে কোনও তারিখ যুক্ত নেই - এটি এখন । তবে আমি 15 সেকেন্ডের জন্য ব্যবহারকারীকে হোমপৃষ্ঠায় ক্যাশে দিতে পুরোপুরি ইচ্ছুক:
200 OK
Cache-Control: max-age=15
যদি ব্যবহারকারী হাতুড়ি দেয় তবে F5তারা 15 সেকেন্ডের জন্য ক্যাশেড সংস্করণ পাবে। যদি এটি কর্পোরেট প্রক্সি হয় তবে একই 15 সেকেন্ডের উইন্ডোতে একই পৃষ্ঠাতে সমস্ত 67198 ব্যবহারকারী হ'ল সমস্ত একই বিষয়বস্তু পাবেন - সমস্তই কাছের ক্যাশে থেকে পরিবেশন করা হয়েছে। পারফরম্যান্স সবার জন্য জয়।
যুক্ত করার গুণটি Cache-Control: max-age
হ'ল ব্রাউজারকে শর্তসাপেক্ষ অনুরোধও করতে হয় না ।
- আপনি যদি কেবল নির্দিষ্ট করে থাকেন
Last-Modified
তবে ব্রাউজারকে একটি অনুরোধ সম্পাদন করতে হবে If-Modified-Since
এবং 304 Not Modified
প্রতিক্রিয়ার জন্য দেখতে হবে
- যদি আপনি নির্দিষ্ট করে থাকেন
max-age
তবে ব্রাউজারটিকে এমনকি নেটওয়ার্কটি রাউন্ড-ট্রিপ ভোগ করতে হবে না; সামগ্রীগুলি ঠিক ক্যাশে থেকে বেরিয়ে আসবে
"ক্যাশে-নিয়ন্ত্রণ: সর্বাধিক বয়স" এবং "মেয়াদ শেষ" এর মধ্যে পার্থক্য
Expires
আধুনিক (সি। 1998) Cache-Control: max-age
শিরোনামের সমতুল্য একটি উত্তরাধিকার :
1998 এর পরে লেখা যে কোনও ওয়েব সাইট Expires
আর ব্যবহার করা উচিত নয় এবং এর পরিবর্তে ব্যবহার করা উচিত max-age
।
ইটাগ কি?
ETag সর্বশেষ-পরিবর্তিত অনুরূপ , এটির তারিখ হতে হবে না - এটি কেবল কিছু হতে পারে ।
যদি আমি একটি ডাটাবেস থেকে পণ্যগুলির তালিকা টানছি, সার্ভার সর্বশেষ rowversion
তারিখের পরিবর্তে একটি ইট্যাগ হিসাবে প্রেরণ করতে পারে :
200 OK
ETag: "247986"
আমার ইটাগ স্ট্যাটিক রিসোর্সের SHA1 হ্যাশ হতে পারে (যেমন চিত্র, জেএসএস, সিএসএস, ফন্ট), বা ক্যাশেড রেন্ডারযুক্ত পৃষ্ঠার (অর্থাত্ মোজিলা এমডিএন উইকি এটি করে; তারা চূড়ান্ত মার্কআপ হয়):
200 OK
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
এবং ঠিক সর্বশেষ-পরিবর্তিত উপর ভিত্তি করে শর্তাধীন অনুরোধের ক্ষেত্রে :
GET / HTTP/1.1
If-Modified-Since: Tue, 16 Oct 2012 03:13:38 GMT
304 Not Modified
আমি ইটাগের ভিত্তিতে শর্তসাপেক্ষ অনুরোধ সম্পাদন করতে পারি :
GET / HTTP/1.1
If-None-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"
304 Not Modified
একটি ETag
তার চেয়েও উচ্চতর Last-Modified
কারণ এটি ফাইলগুলি ছাড়াও জিনিসগুলির জন্য কাজ করে বা তারিখের ধারণা রয়েছে এমন জিনিসগুলির জন্য । এটা ঠিক নয়