অ্যাপাচি HTTP ক্লায়েন্ট (Apache HTTP Client)-এ HTTP Caching একটি গুরুত্বপূর্ণ কৌশল যা ওয়েব ক্লায়েন্ট (যেমন ব্রাউজার বা HTTP ক্লায়েন্ট) এবং সার্ভারের মধ্যে সংস্থানগুলো ক্যাশে (সংরক্ষণ) করার মাধ্যমে কর্মক্ষমতা উন্নত করে এবং পুনরায় অনুরোধ পাঠানোর সময় সময় এবং ব্যান্ডউইথ সাশ্রয়ী হয়। HTTP ক্যাশিং ক্লায়েন্ট এবং সার্ভারের মধ্যে একযোগে কাজ করে, যাতে সার্ভার থেকে ডেটা পুনরায় না আনা হয়, এবং আগের সংরক্ষিত ডেটা ব্যবহার করা যায়।
HTTP ক্যাশিং হলো একটি প্রযুক্তি যা HTTP অনুরোধের জন্য সার্ভার থেকে প্রাপ্ত ডেটাকে ক্যাশে (সংরক্ষণ) করার প্রক্রিয়া। যখন একটি নতুন অনুরোধ আসে, তখন ক্লায়েন্ট ক্যাশে ডেটা পরীক্ষা করে এবং যদি এটি বৈধ হয়, তবে সরাসরি ক্যাশে সংরক্ষিত ডেটা প্রদান করা হয়, যা সার্ভারের অনুরোধটি কমাতে সহায়ক। এর মাধ্যমে ডেটা রিট্রিভাল সময় কমানো এবং সার্ভারের প্রতি চাপ কমানো সম্ভব হয়।
HTTP ক্যাশিং Cache-Control
, ETag
, এবং Last-Modified
এর মত হেডারগুলির মাধ্যমে নিয়ন্ত্রিত হয়। এই হেডারগুলির মাধ্যমে সার্ভার ক্লায়েন্টকে জানিয়ে দেয় কখন ডেটা ক্যাশে রাখা উচিত, কিভাবে পুনরায় ব্যবহার করা যাবে এবং কখন তা পুনরায় সার্ভার থেকে আনা উচিত।
Cache-Control
হেডার HTTP ক্যাশিং এর প্রধান নিয়ন্ত্রণ মেকানিজম। এটি ক্লায়েন্ট এবং প্রাক্সি সার্ভারকে ক্যাশিং কৌশল নির্দেশ করে।
Cache-Control এর সাধারণ ভ্যালুসমূহ:
public
: ডেটা ক্যাশে করতে অনুমতি দেয় এবং এটি শেয়ারযোগ্য।private
: ডেটা শুধুমাত্র ক্লায়েন্টের জন্য ক্যাশে হবে, প্রাক্সি সার্ভারের জন্য নয়।no-cache
: ডেটা ক্যাশে করা যাবে, কিন্তু এটি সার্ভারের সাথে যাচাই করতে হবে যে এটি সঠিক কি না।no-store
: ক্যাশে করা যাবে না, প্রতিবার সার্ভার থেকে নতুন ডেটা নিতে হবে।max-age
: ডেটা কত সময়ের জন্য ক্যাশে থাকবে তা নির্দিষ্ট করে। উদাহরণ: max-age=3600
(1 ঘণ্টা)Cache-Control: public, max-age=3600
এটি বলে যে ডেটা পাবলিক ক্যাশে রাখা যাবে এবং 1 ঘণ্টার জন্য বৈধ থাকবে।
ETag
(Entity Tag) হেডার একটি ইউনিক চিহ্ন প্রদান করে যা নির্দিষ্ট ডেটার সংস্করণ বা কন্টেন্টের একটি স্বতন্ত্র চিহ্ন হিসেবে কাজ করে। যখন একটি ক্লায়েন্ট সার্ভারে একটি অনুরোধ পাঠায়, এটি ETag
হেডার সহ একটি If-None-Match
হেডার পাঠাতে পারে, যা সার্ভারের কাছে কেবল তখনই ডেটা চাইবে যদি এটি আগের ETag
এর সাথে মেলেনি।
ETag: "686897696a7c876b7e"
এটি ডেটার সংস্করণ প্রতিনিধিত্ব করে এবং ক্লায়েন্ট পরবর্তী অনুরোধে এটি ব্যবহার করতে পারে।
Last-Modified
হেডারটি নির্দেশ করে কখন একটি রিসোর্স সর্বশেষ পরিবর্তিত হয়েছিল। ক্লায়েন্ট পরবর্তী অনুরোধে If-Modified-Since
হেডার সহ পাঠিয়ে সার্ভারকে বলবে যে, যদি রিসোর্সটি পূর্বের Last-Modified
সময়ের পর পরিবর্তিত না হয়, তবে এটি পুনরায় সার্ভার থেকে আনতে হবে না এবং ক্যাশে থেকে ব্যবহার করা যাবে।
Last-Modified: Mon, 20 Dec 2023 08:00:00 GMT
অ্যাপাচি HTTP ক্লায়েন্টে HTTP ক্যাশিং ব্যবহার করতে হলে, আপনাকে একটি CacheAwareHttpClient তৈরি করতে হবে যা ক্যাশিং সক্ষম করবে। HttpCache
প্যাকেজ ব্যবহার করে HTTP ক্যাশিং কার্যকর করা যায়।
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.classic.HttpGet;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.cache.BasicHttpCacheStorage;
import org.apache.hc.client5.http.impl.cache.CacheConfig;
import org.apache.hc.client5.http.impl.cache.CacheAwareHttpClient;
import org.apache.hc.client5.http.impl.cache.DefaultCacheStrategy;
import org.apache.hc.client5.http.impl.cache.HttpCacheContext;
public class ApacheHttpClientCachingExample {
public static void main(String[] args) throws Exception {
// CacheConfig তৈরি করা
CacheConfig cacheConfig = CacheConfig.custom()
.setMaxCacheEntries(1000)
.setTimeToLive(TimeValue.ofMinutes(10))
.build();
// CacheAwareHttpClient তৈরি করা
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultCacheConfig(cacheConfig)
.setCacheStorage(new BasicHttpCacheStorage())
.build();
// GET অনুরোধ তৈরি করা
HttpGet request = new HttpGet("https://example.com");
// HTTP অনুরোধ পাঠানো এবং ক্যাশিং ব্যবহার করা
try (CloseableHttpResponse response = httpClient.execute(request)) {
System.out.println("HTTP Response Status Code: " + response.getCode());
System.out.println("Response Entity: " + response.getEntity());
}
}
}
CacheConfig
: এটি ক্যাশের কনফিগারেশন সেট আপ করে, যেমন সর্বাধিক ক্যাশে এন্ট্রি এবং লাইফটাইম।CacheAwareHttpClient
: এটি একটি কাস্টম HTTP ক্লায়েন্ট যা ক্যাশিং সমর্থন করে এবং সঠিকভাবে ক্যাশে সংরক্ষণ এবং পুনরায় ব্যবহার করে।BasicHttpCacheStorage
: এটি একটি সাধারণ ক্যাশ স্টোরেজ যেখানে ডেটা ক্যাশে সংরক্ষিত হয়।HTTP ক্যাশিং হল একটি শক্তিশালী কৌশল যা কার্যক্ষমতা বৃদ্ধি এবং ব্যান্ডউইথ সাশ্রয়ে সহায়ক। Cache-Control
, ETag
, এবং Last-Modified
হেডারগুলির মাধ্যমে আপনি ক্লায়েন্ট এবং সার্ভারের মধ্যে ক্যাশিং নিয়ন্ত্রণ করতে পারেন। অ্যাপাচি HTTP ক্লায়েন্টে ক্যাশিং ব্যবহার করার জন্য, CacheAwareHttpClient এবং CacheConfig কনফিগারেশন সহ কাস্টম ক্যাশিং স্টোরেজ ব্যবহার করা হয়। ক্যাশিংয়ের মাধ্যমে আপনার অ্যাপ্লিকেশন দ্রুত এবং আরও দক্ষভাবে কাজ করতে পারে।
common.read_more