सर्वर प्रतिक्रिया 304 Not Modified
HTTP статус-код 304 (Not Modified)
HTTP статус-код 304 (Not Modified) एक सर्वर द्वारा भेजा जाने वाला उत्तर है, जो यह दर्शाता है कि अनुरोधित संसाधन अंतिम अनुरोध के समय से नहीं बदला है। यह कोड कैशिंग के कार्य को अनुकूलित करने के लिए उपयोग किया जाता है, जिससे उन डेटा को स्थानांतरित करने से बचा जा सके जो नहीं बदले हैं।
मुख्य विशेषताएँ
-
परिभाषा और उद्देश्य
HTTP 304 स्थिति कोड का मुख्य उद्देश्य यह सूचित करना है कि संसाधन में कोई बदलाव नहीं हुआ है और क्लाइंट को पिछले कैश की गई सामग्री का उपयोग करने की अनुमति दी जाती है।
-
कैशिंग तंत्र का कार्य
जब एक सर्वर 304 कोड वापस करता है, तो वह क्लाइंट को बताता है कि वह पहले से कैश की गई सामग्री का उपयोग कर सकता है। इससे बैंडविड्थ की बचत होती है और लोड समय में सुधार होता है।
-
शर्तें
सर्वर 304 स्थिति कोड तब लौटाता है जब:
- क्लाइंट ने If-Modified-Since या If-None-Match हेडर भेजा हो।
- संसाधन में कोई परिवर्तन नहीं हुआ हो।
व्यावहारिक उदाहरण
-
वेबसाइट पर छवियों का कैशिंग
जब एक उपयोगकर्ता वेबसाइट पर पहली बार एक छवि लोड करता है, तो ब्राउज़र उसे कैश करता है। यदि उपयोगकर्ता बाद में उसी छवि को फिर से लोड करता है, तो ब्राउज़र एक If-Modified-Since हेडर भेजता है। यदि सर्वर 304 कोड लौटाता है, तो ब्राउज़र कैश की गई छवि का उपयोग करता है।
-
API के लिए 304 का उपयोग
API अनुरोधों में, यदि क्लाइंट पहले से संसाधन को कैश किया गया है और कोई बदलाव नहीं हुआ है, तो सर्वर 304 स्थिति कोड भेज सकता है, जिससे डेटा ट्रैफिक कम होता है।
-
If-Modified-Since और If-None-Match हेडर्स
ये हेडर्स सर्वर को सूचित करते हैं कि क्लाइंट के पास पहले से कौन सा डेटा है। यदि सर्वर को पता चलता है कि डेटा नहीं बदला है, तो वह 304 कोड लौटाता है।
भाषाओं में समस्याएँ और समाधान
-
PHP
कैशिंग के लिए हेडर्स सेट करना:
header('Cache-Control: max-age=3600'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastModified) . ' GMT');
304 कोड लौटाने का उदाहरण:
if ($lastModified <= strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { header('HTTP/1.1 304 Not Modified'); exit; }
-
Python (Flask)
कैशिंग को सेट करने के लिए:
from flask import Flask, request, make_response app = Flask(__name__) @app.route('/resource') def get_resource(): response = make_response("Resource Data") response.headers['Last-Modified'] = 'Last-Modified-Date' return response
-
Node.js (Express)
304 स्थिति कोड के लिए अनुरोधों को संभालने का उदाहरण:
app.get('/resource', (req, res) => { if (req.headers['if-modified-since'] === lastModified) { res.status(304).send(); } else { res.send('Resource Data'); } });
सामान्य गलतियाँ और उनके समाधान
- सर्वर पर कैशिंग की गलत सेटिंग्स: सुनिश्चित करें कि कैशिंग हेडर्स सही हैं।
- अनुरोध में हेडर्स में त्रुटियाँ: हेडर नाम और मान की जांच करें।
- 304 स्थिति कोड की जाँच कैसे करें: नेटवर्क टूल्स का उपयोग करें, जैसे ब्राउज़र के विकास उपकरण।