Cache Response Management হল একটি কার্যকরী পদ্ধতি যা ক্লায়েন্টের মধ্যে HTTP response-গুলি ক্যাশে করতে সহায়ক, যাতে পরবর্তী একই ধরনের request পাঠানোর সময় সার্ভার থেকে পুনরায় একই response নিতে না হয়। এটি সার্ভারের উপর অপ্রয়োজনীয় লোড কমাতে এবং অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে সাহায্য করে। Apache HTTP Client এ ক্যাশে ব্যবস্থাপনা করতে HTTP Cache সমর্থন করার জন্য HttpCache
এবং CacheManager
ব্যবহার করা হয়।
Apache HTTP Client এ cache management কার্যকরী করতে HttpClientCache এবং CacheManager ব্যবহার করতে হয়। ক্যাশে ব্যবস্থাপনা করতে HttpCache
এবং CacheManager
কনফিগারেশন ব্যবহৃত হয়, যা HTTP response ক্যাশে করতে এবং প্রয়োজন অনুযায়ী তা রিট্রিভ করতে সহায়ক।
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.cache.CacheConfig;
import org.apache.http.impl.client.cache.CachingHttpClient;
import org.apache.http.impl.client.cache.FileSystemCacheStorage;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.HttpHeaders;
import org.apache.http.util.EntityUtils;
import java.io.File;
public class HttpClientCacheExample {
public static void main(String[] args) {
// Set Cache directory
File cacheDirectory = new File("httpcache");
if (!cacheDirectory.exists()) {
cacheDirectory.mkdir(); // Create the cache directory if it doesn't exist
}
// Cache Configuration
CacheConfig cacheConfig = CacheConfig.custom()
.setMaxCacheEntries(1000) // Maximum cache entries
.setMaxObjectSize(1024 * 1024) // Maximum object size to cache (1 MB)
.build();
// Pooling Connection Manager for Connection Pooling
PoolingHttpClientConnectionManager poolingConnManager = new PoolingHttpClientConnectionManager();
// Create a CachingHttpClient
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(poolingConnManager) // Apply Connection Manager
.setDefaultRequestConfig(RequestConfig.custom()
.setConnectTimeout(5000) // Connection timeout
.setSocketTimeout(10000) // Socket timeout
.build())
.addInterceptorFirst(new CachingHttpResponseInterceptor()) // Cache response
.build();
// CachingHttpClient for HTTP Cache Management
CachingHttpClient cachingHttpClient = new CachingHttpClient(httpClient, cacheConfig, new FileSystemCacheStorage(cacheDirectory));
// Send a GET request and manage cache
String url = "https://jsonplaceholder.typicode.com/posts";
try {
HttpGet httpGet = new HttpGet(url);
httpGet.setHeader(HttpHeaders.USER_AGENT, "ApacheHttpClientCacheDemo");
// Send the request and get the response
HttpResponse response = cachingHttpClient.execute(httpGet);
// Handle the response
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("Response Code: " + statusCode);
HttpEntity entity = response.getEntity();
if (entity != null) {
String responseBody = EntityUtils.toString(entity);
System.out.println("Response Body: " + responseBody);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
CacheConfig
ব্যবহার করে ক্যাশে কনফিগার করা হয়, যেমন max cache entries (কতগুলি response ক্যাশে থাকবে) এবং max object size (কত বড় response ক্যাশে করা যাবে)।setMaxCacheEntries(1000)
: ক্যাশে সর্বোচ্চ 1000টি entry রাখা যাবে।setMaxObjectSize(1024 * 1024)
: ক্যাশে প্রতিটি object এর সাইজ 1MB এর বেশি হতে পারবে না।FileSystemCacheStorage
ব্যবহার করে ক্যাশে ফাইল সিস্টেমে সংরক্ষিত হয়। cacheDirectory
হল সেই ডিরেক্টরি যেখানে ক্যাশে ফাইলগুলি সঞ্চিত থাকবে।CachingHttpClient
মূল HttpClient
কে কাস্টম ক্যাশ কনফিগারেশন এবং ক্যাশ স্টোরেজের সাথে কনফিগার করে। এর মাধ্যমে HTTP response ক্যাশে করা হয় এবং পরে একই request আসলে ক্যাশে থেকে response ফেরত দেওয়া হয়।HttpGet
ব্যবহার করে HTTP GET request পাঠানো হয়েছে এবং response ক্যাশে পরিচালনা করা হয়েছে। CachingHttpResponseInterceptor
এর মাধ্যমে ক্যাশে response intercept করা হয়।Cache-Control
header ব্যবহার করা হয়, যা ক্যাশে করার শর্তাবলী নিয়ন্ত্রণ করে। উদাহরণস্বরূপ, Cache-Control: max-age=3600
মানে response 1 ঘণ্টা পর্যন্ত ক্যাশে থাকবে।Apache HttpClient এর মাধ্যমে Cache Response Management কার্যকর করতে CachingHttpClient এবং CacheConfig ব্যবহার করা হয়। এর মাধ্যমে HTTP response ক্যাশে করে রাখা হয়, যা পরবর্তী একে অপরের জন্য পুনরায় ব্যবহৃত হতে পারে। এটি পারফরম্যান্স উন্নত করতে এবং সার্ভারের ওপর লোড কমাতে সহায়ক।
common.read_more