Apache est de ne pas envoyer de réponse 304 (si mod_deflate et AddOutputFilterByType est activé)

J'ai ajouté la ligne suivante dans mon Apache httpd.conf: -

AddOutputFilterByType DEFLATE text/html text/css application/javascript application/x-javascript application/json

J'ai un fichier html (test.html) avec une inclusion de script: -

<script type="text/javascript" src="/test.js"></script>

Le problème est, à chaque fois que je charge test.html, test.js est également chargé avec l'état HTTP: 200.

La question est: Pourquoi le conditionnel est pas satisfait?

Si je commente la "AddOutputFilterByType" ligne dans httpd.conf Apache envoie 304.

Si j'active AddOutputFilterByType dans httpd.conf, l'en-tête de demande est: -

De l'hôte: optimiser 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 GTB5 (.NET CLR 3.5.30729) FirePHP/0.2.4 
Accept: */* 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip, deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 300 
Connection: keep-alive 
Referer: http://optimize/
Cookie: PHPSESSID=nbq6h0eeahkshkcbc6ctu2j2b4 
Si-Modified-since: mardi 19 Mai 2009 à 07:06:46 GMT 
Si-None-Match: "2000000000717f-2c25a-46a3e8dcc2ad8"-gzip 
Cache-Control: max-age=0 

Et l'entête de la réponse est: -

Date: Fri, 22 Mai 2009 à 07:03:40 GMT 
Serveur: Apache/2.2.9 (Win32) PHP/5.2.6 
Dernière modification: mardi 19 Mai 2009 à 07:06:46 GMT 
Etag: "2000000000717f-2c25a-46a3e8dcc2ad8"-gzip 
Accept-Ranges: bytes 
Vary: Accept-Encoding 
Content-Encoding: gzip 
Content-Length: 52583 
Keep-Alive: timeout=5, max=98 
Connection: Keep-Alive 
Content-Type: application/javascript 

Mise à JOUR: j'ai remarqué, si je suis la désactivation de l'ETag, il fonctionne correctement. Je veux dire qu'il envoie 304.

FileETag None

Mais je tiens vraiment à garder ETag que c'est (je sais qu'il y a un inode question d'information).

  • Avez-vous jamais trouver une solution de contournement? Apache 2.4 semble être en train de faire la même chose, toujours de l'envoi de 200 réponse pour gzip serais content
  • Une raison quelconque vous souhaitez conserver les ETags? Il n'y a pas de réel intérêt à disposer d'eux si vous êtes juste de servir du contenu statique qui a déjà une Last-Modified date de revalidation. Certes, axing eux serait la solution la plus conforme à la RFC solution de contournement pour l'instant.
  • ETags sont nécessaires. Si jamais vous voulez remplacer le contenu avec une version plus ancienne (par exemple fichier javascript qui doit être reversée à une ancienne version sans bug qui a été introduit) et quand revenir le fichier de date plus ancienne, à l'époque, une simple comparaison de dates ne suffira pas.
  • Fascinant que cette question est toujours valable, presque une décennie après le post initial - d'achoppement dans apache 2.4.35 en 2019. sur la dernière version Stable de Debian pour le moment.
InformationsquelleAutor Sabya | 2009-05-22