Serverrespons 304 Not Modified
HTTP Statuscode 304 (Not Modified)
HTTP-statuscode 304 (Not Modified) is een antwoord van de server dat aangeeft dat de opgevraagde bron sinds de laatste aanvraag van de cliënt niet is gewijzigd. Deze code wordt gebruikt om de efficiëntie van caching te optimaliseren, waardoor de overdracht van ongewijzigde gegevens wordt vermeden.
Belangrijkste kenmerken van statuscode 304
- Definitie en doel: De 304-statuscode informeert de cliënt dat de opgeslagen versie van de bron nog actueel is, waardoor onnodige gegevensoverdracht wordt voorkomen.
- Werking van het cachingmechanisme: Wanneer een cliënt een bron aanvraagt, kan de server de statuscode 304 terugsturen als de bron niet is gewijzigd sinds de laatste keer dat deze is opgevraagd, op basis van cache-informatie.
- Voorwaarden voor statuscode 304: De server retourneert deze status wanneer de cliënt specifieke headers zoals
If-Modified-Since
ofIf-None-Match
meestuurt.
Praktische voorbeelden van het gebruik van statuscode 304
Voorbeeld met caching van afbeeldingen op een website
- Hoe de browser cache opslaat: Browsers slaan bronnen zoals afbeeldingen lokaal op om de laadtijd van pagina's te versnellen.
- Gedrag bij een herhaalde aanvraag: Wanneer een gebruiker dezelfde afbeelding opnieuw opvraagt, kan de browser de server vragen of de afbeelding is gewijzigd. Als dat niet het geval is, ontvangt de browser een 304-statuscode.
Voorbeeld met een API
De statuscode 304 kan worden gebruikt om verzoeken aan een API te optimaliseren. Wanneer een client een bron opvraagt die eerder is gedownload, kan de server bepalen of de bron is gewijzigd en alleen de statuscode terugsturen zonder de volledige gegevens opnieuw te verzenden.
Voorbeeld met de headers If-Modified-Since en If-None-Match
Deze headers worden vaak gebruikt in HTTP-verzoeken om te controleren of de bron is gewijzigd. De server vergelijkt de verzonden data met zijn versie en kan indien nodig een 304-statuscode retourneren als de gegevens niet zijn gewijzigd.
Header | Beschrijving |
---|---|
If-Modified-Since | Geeft de laatste tijd aan waarop de cliënt de bron heeft ontvangen. |
If-None-Match | Bevat een etag die overeenkomt met de huidige versie van de bron op de server. |
Problemen met statuscode 304 oplossen in verschillende programmeertalen
PHP
In PHP kan de statuscode 304 worden ingesteld door de juiste headers voor caching te configureren. Dit kan worden gedaan met de functie header()
.
header("Cache-Control: max-age=3600");
if (/* voorwaarden voor 304 */) {
header("HTTP/1.1 304 Not Modified");
exit();
}
Python (Flask)
Bij het gebruik van Flask kan de statuscode 304 worden ingesteld door de caching-instellingen correct te configureren en de statuscode te controleren.
from flask import Flask, request, make_response
app = Flask(__name__)
@app.route('/resource')
def resource():
response = make_response("Resource data")
response.headers['Cache-Control'] = 'max-age=3600'
if /* voorwaarden voor 304 */:
return '', 304
return response
Node.js (Express)
In Node.js met Express kan de statuscode 304 worden verwerkt door de juiste headers in de aanvraag te controleren.
app.get('/resource', (req, res) => {
if (/* voorwaarden voor 304 */) {
return res.status(304).end();
}
res.send("Resource data");
});
Veelvoorkomende fouten en hoe deze op te lossen
- Onjuiste cachinginstellingen op de server: Zorg ervoor dat de server correct is ingesteld om caching te ondersteunen.
- Fouten in de aanvraagheaders: Controleer of de headers
If-Modified-Since
enIf-None-Match
correct zijn ingesteld. - Testen en debuggen van statuscode 304: Gebruik tools zoals curl of browserontwikkelaarstools om de status van de aanvraag te controleren.