ক্যাশে যাওয়ার একাধিক উপায় রয়েছে।
শর্তসাপেক্ষে জিইটি
আপনি যদি এই চিত্রগুলি ফাইল সিস্টেমে সংরক্ষণ করে এবং সরাসরি ওয়েব সার্ভারের মাধ্যমে সেগুলি সরবরাহ করে থাকেন তবে আপনি সম্ভবত ইতিমধ্যে শর্তযুক্ত গেট ব্যবহার করছেন । ওয়েব সার্ভার একটি স্বয়ংক্রিয়ভাবে ETAG শিরোনাম সেট করতে ফাইল সিস্টেম মেটাডেটা ব্যবহার করবে এবং ব্রাউজারের অনুরোধে শিরোনাম অন্তর্ভুক্ত থাকলে If-Modified-Since
বা If-Matches
শিরোনামগুলি স্বয়ংক্রিয়ভাবে "304 সংশোধিত নয়" দিয়ে জবাব দেবে । (সমস্ত ব্রাউজারগুলি।)
এই ক্ষেত্রে পুরো চিত্রটি আবার সরবরাহ করা হবে না, সুতরাং আপনার ব্যান্ডউইথ সঞ্চয় রয়েছে have তবে, একটি জিইটি অনুরোধটি এখনও জারি করা হবে, সুতরাং আপনার কাছে এখনও একটি অনুরোধের ওভারহেড এবং বিলম্ব থাকবে।
নিজের ইমেজের জন্য Cache-Control
একটি public,max-age=N
মান দিয়ে ওয়েবসারভার সেট করে দিয়ে আপনি ক্যাশে তাজাতে ব্যয় করে অনুরোধের সংখ্যাটি কিছুটা হ্রাস করতে পারেন । এটি বলে যে ক্যাশেগুলি রিসোর্সটি সর্বাধিক max-age
সেকেন্ডের জন্য রাখতে পারে তাদের আপডেট করা আছে কিনা তা পরীক্ষা করে দেখার আগে।
যাইহোক, এইচটিটিপি ক্যাশে প্রবেশকে অবৈধ করার জন্য কেবলমাত্র একটি উপায় নির্ধারণ করে, যা আপনার অ্যাপ্লিকেশনটির শব্দার্থবিজ্ঞানের সাথে মানানসই নয়: আপনি যদি কোনও পোস্টে পোষ্ট বা পুট করেন যা প্রোফাইল ফটো আপডেট করে, একটি Location: [url of photo]
শিরোনাম দিয়ে উত্তর দেয় এবং সেই ইউআরএলটির ক্যাশে প্রবেশ বাতিল করা হবে।
(এই প্রক্রিয়া যে আপনার মন্তব্যের সঙ্গে একটি ওয়েবপেজ পৃষ্ঠা জোরপূর্বক ব্যবহারকারী পোস্টের পরে ব্রাউজার দ্বারা পুনরায় লোড ক্যাশে, এবং তারপর আছে মঞ্জুরি দেয় একটি নতুন মন্তব্য। ব্রাউজার একটি উত্তর হবে POST /comment
সঙ্গে 303 See Other
একটি Location: /page/with/comment
। উল্লেখ্য যে, এই ব্যবহার করা হয়নি দীর্ঘদিনের ত্রুটির কারণে ফায়ারফক্সে কাজ করতে হবে ))
আপনার যদি প্রচুর ট্র্যাফিক না থাকে তবে ক্যাশিংয়ের জন্য এই পদ্ধতিটি ভাল।
ইউআরএল পরিবর্তন করা হচ্ছে
একটি ইউআরএল একটি সংস্থার প্রতিনিধিত্ব, সুতরাং ক্যাশে পরিচালনা করার অন্য একটি উপায় হ'ল সংস্থানটির ক্যাশে প্যারামিটারগুলি পরিবর্তন করা নয়, "চিরতরে ক্যাশে" নির্দেশনা সহ একেবারে নতুন সংস্থান তৈরি করা। এটি "বড় ছেলেরা" পছন্দ করে এমন পন্থা, কারণ এটি তাদের ব্যান্ডউইথের প্রচুর পরিমাণে সাশ্রয় করে কোনও অতিরিক্ত অনুরোধ তৈরি করতে দেয় । খারাপ দিকটি এটির জন্য আরও অনেক বেশি বুককিপিং প্রয়োজন।
এর জন্য দুটি সাধারণ কৌশল রয়েছে।
ক্যারি স্ট্রিং
ওয়েব সার্ভারগুলি ফাইল সিস্টেম থেকে কোনও ফাইল পরিবেশন করার সময় ক্যোয়ারী স্ট্রিংগুলিকে উপেক্ষা করে। ক্যাশেগুলি অবশ্য তা করে না: /1.jpg?t=12345
এবং /1.jpg?t=67890
সার্ভারটি একইরকম মনে করে, যদিও এটি দুটি সম্পূর্ণ পৃথক, অপ্রাসঙ্গিক সংস্থান।
সুতরাং আপনি যে সহজ কাজটি করতে পারেন তা হ'ল যখনই আপনি আপনার এইচটিএমএল কোনও সংস্থার জন্য কোনও রেফারেন্স তৈরি করেন এবং একটি দীর্ঘ Expires
শিরোনাম সেট করে থাকেন তখন কোয়েরি স্ট্রিং হিসাবে ফাইল সিস্টেম টাইমস্ট্যাম্প যুক্ত করুন । তারপরে ব্রাউজারটি এই সংস্থানটি চিরতরে ক্যাশে করে দেবে এবং যতক্ষণ না কোয়েরি স্ট্রিং পরিবর্তন না হয় ততক্ষণ কোনও জিইটিগুলি করবে না।
একটি খারাপ দিক হ'ল যদি আপনি কোনও ক্যাশে জোর করে অকার্যকর করতে চান তবে কোনও আইটেমটির জন্য নতুন ইউআরএলটির ওয়েবসারভারকে নির্দেশ দেওয়া কঠিন বা অসম্ভব। উদাহরণস্বরূপ, যদি কোনও ব্রাউজারের কোনও /1.jpg?v=1
রেফারেন্স সহ ক্যাশেড এইচটিএমএল পৃষ্ঠা থাকে তবে এর জন্য এন্ট্রিটি সাফ করার জন্য ঘটেছে /1.jpg?v=1
(সম্ভবত এটি ফাইল বা মেমরির জায়গার বাইরে চলে গেছে), এটি একটি নতুন অনুরোধ জানাবে /1.jpg?v=1
। এর মধ্যে যদি চিত্রটি পরিবর্তিত হয় /1.jpg?v=2
তবে সঠিক প্রতিক্রিয়া হয়:
- ফাইলটির পুরানো সংস্করণ পরিবেশন করুন। আপনি যদি এই মুহূর্তে একটি নির্দিষ্ট মুহুর্তে সমস্ত সংস্থানগুলি একে অপরের সাথে সামঞ্জস্যপূর্ণ থাকতে চান তবে আপনি এটি করতে পারেন। সিএসএস ফাইলগুলির সাথে আপনার এটি করা উচিত, উদাহরণস্বরূপ, কোনও পুরানো এইচটিএমএল ফাইল সহ একটি নতুন সিএসএস ফাইল সঠিকভাবে কাজ করতে পারে না!
- ব্যবহার করে ফাইলের নতুন সংস্করণে পুনর্নির্দেশ করুন
301 Moved Permanently
। আপনি যদি এটি চান যে সমস্ত সংস্থান যথাসম্ভব নতুন হতে পারে।
এই উভয়টিই কেবল ওয়েবসারভারের সাথে করা কঠিন, যার অর্থ আপনাকে চিত্রের অনুরোধগুলির জন্য এমনকি একটি ওয়েব অ্যাপ্লিকেশনটি আহ্বান করা প্রয়োজন, যা আরও জটিল এবং আরও বেশি সংস্থান-নিবিড় হতে পারে। ওয়েব সার্ভারগুলি ফাইল পরিবেশন করতে খুব দ্রুত , তাই কোনও ওয়েব অ্যাপ্লিকেশনের ওভারহেড আপনার ব্যান্ডউইথ এবং ল্যাটেন্সি লাভগুলি গ্রাস করতে পারে।
ফাইলের নাম
কোয়েরি স্ট্রিং যুক্ত করার পরিবর্তে আপনি ফাইলের নামটি পরিবর্তন করেন। এর অর্থ ফাইল সিস্টেমে ফাইলের একাধিক সংস্করণ রাখা সহজ, তবে আপনার সংস্থান এবং তাদের নামগুলি ট্র্যাক রাখতে আপনার সম্ভবত ফাইল মেটাডেটা সংরক্ষণ করতে হবে এবং অন্যান্য ডাটাবেস বুক-কিপিং করতে হবে।