Compressed JSON Response হলো একটি প্রযুক্তি যা সার্ভার থেকে JSON ডেটা পাঠানোর সময় ডেটার সাইজ কমিয়ে দেয়। এটি নেটওয়ার্ক ট্রাফিকের পরিমাণ কমিয়ে, সার্ভারের রিসোর্স এবং ক্লায়েন্ট সাইডের লোডিং সময়কে অপটিমাইজ করতে সাহায্য করে। JSON ডেটা সংকুচিত করার জন্য সাধারণত GZIP বা Deflate কনপ্রেশন প্রযুক্তি ব্যবহার করা হয়।
এই উদাহরণে, আমরা একটি সার্ভার থেকে JSON ডেটা পাঠানোর সময় GZIP কনপ্রেশন ব্যবহার করার প্রক্রিয়া দেখব।
Java Servlet ব্যবহার করে Compressed JSON Response তৈরি করা
1. GZIP কমপ্রেশন সক্রিয় করা
Java Servlet এ JSON ডেটা কমপ্রেস করার জন্য GZIP কনপ্রেশন ব্যবহার করা যাবে। ServletResponse তে GZIP কনপ্রেশন সক্রিয় করার জন্য আপনাকে কিছু স্টেপ অনুসরণ করতে হবে।
2. GZIP কমপ্রেসড JSON Response উদাহরণ
ধরা যাক, একটি সার্ভার ক্লায়েন্টকে JSON ডেটা পাঠাচ্ছে এবং আপনি চাইছেন JSON ডেটাটি সংকুচিত (Compressed) আকারে পাঠানো হোক।
Servlet কোড উদাহরণ:
import java.io.*;
import java.util.zip.GZIPOutputStream;
import javax.servlet.*;
import javax.servlet.http.*;
public class CompressedJsonResponseServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Content-Type হিসেবে application/json নির্ধারণ
response.setContentType("application/json");
// GZIP কনপ্রেশন সক্রিয় করা
String acceptEncoding = request.getHeader("Accept-Encoding");
if (acceptEncoding != null && acceptEncoding.contains("gzip")) {
response.setHeader("Content-Encoding", "gzip");
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(response.getOutputStream());
PrintWriter writer = new PrintWriter(new OutputStreamWriter(gzipOutputStream, "UTF-8"));
// JSON ডেটা
String jsonResponse = "{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}";
// JSON ডেটা লেখা
writer.write(jsonResponse);
writer.close();
gzipOutputStream.finish();
} else {
// যদি GZIP সমর্থিত না হয় তবে সাধারণ JSON পাঠানো হবে
PrintWriter writer = response.getWriter();
writer.write("{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}");
writer.close();
}
}
}
ব্যাখ্যা:
- Content-Encoding Header:
- যখন ক্লায়েন্ট GZIP সমর্থন করে, সার্ভার
Content-Encoding: gzipহেডার সেট করে। - এরপর সার্ভার ক্লায়েন্টকে GZIP কনপ্রেসড JSON পাঠাতে GZIPOutputStream ব্যবহার করে JSON ডেটা সংকুচিত করে পাঠায়।
- যখন ক্লায়েন্ট GZIP সমর্থন করে, সার্ভার
- GZIPOutputStream:
GZIPOutputStreamব্যবহার করে আপনি JSON ডেটা কনপ্রেস করতে পারেন, যা সার্ভার থেকে ক্লায়েন্টে পাঠানো হবে।
- OutputStreamWriter:
- এটি GZIPOutputStream এর মাধ্যমে বাইনারি আউটপুট স্ট্রিমকে একটি চরিত্র স্ট্রিমে রূপান্তরিত করে।
- Fallback:
- যদি ক্লায়েন্ট GZIP সমর্থন না করে, তবে সাধারণ JSON ডেটা পাঠানো হয়।
3. Client-Side (JavaScript) Response Handling
ক্লায়েন্ট সাইডে, JavaScript এর মাধ্যমে আপনি সংকুচিত JSON ডেটা ডিকোড করতে পারেন। আধুনিক ব্রাউজার GZIP কনপ্রেসড রেসপন্স আutomatically ডিকোড করে, তাই বিশেষ কিছু করার প্রয়োজন নেই।
fetch('http://your-server.com/compressed-json-endpoint')
.then(response => response.json()) // GZIP ডেটা ডিকোড হবে এখানে
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
4. HTTP Response Example
ধরা যাক, সার্ভার একটি GZIP কনপ্রেসড JSON ডেটা পাঠাচ্ছে, তার HTTP রেসপন্স এরকম দেখাবে:
Request Header:
GET /compressed-json-endpoint HTTP/1.1
Host: your-server.com
Accept-Encoding: gzip
Response Header:
HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: application/json
Content-Length: 94
Response Body (Compressed JSON): এটি একটি কমপ্রেসড আকারে থাকে, এবং JavaScript ক্লায়েন্ট তা ডিকোড করে পাঠ্য আকারে প্রাপ্ত করবে।
সারাংশ
Compressed JSON Response সার্ভার থেকে ক্লায়েন্টে JSON ডেটা পাঠানোর সময় নেটওয়ার্ক ব্যান্ডউইথ সাশ্রয় এবং লোড টাইম কমানোর একটি কার্যকরী পদ্ধতি। Java Servlet ব্যবহার করে আপনি GZIP কনপ্রেশন সক্রিয় করে JSON ডেটা সংকুচিত পাঠাতে পারেন। এই পদ্ধতি সার্ভার এবং ক্লায়েন্টের মধ্যে দ্রুত ডেটা ট্রান্সফার নিশ্চিত করতে সাহায্য করে, বিশেষত যখন JSON ডেটা বড় আকারের হয়।
Read more