Sto usando lighttpd per servire file statici. Ho un sacco di immagini in una directory che aggiorno regolarmente. Ciò modificherà il contenuto del file (e la dimensione del file) nonché la data di modifica, ma non il loro nome file.
Quando accedo ai file tramite http, gli aggiornamenti non vengono presi in considerazione e serve leggermente il vecchio file. Posso rinominare manualmente il file in qualcosa di diverso, quindi lighttpd restituirà un errore 404 e se rinominerò il mio file, otterrò la versione aggiornata corretta. Sembra che lightty stia usando un qualche tipo di meccanismo cache (che va bene) per restituire file statici. Purtroppo, questo meccanismo sembra non aggiornarsi quando i file vengono modificati.
Ho controllato tramite Wireshark e il mio browser sta davvero facendo una richiesta al file, questo non è un problema di memorizzazione nella cache del browser. Restituisce un 200 OK quando lo si richiede da una cache vuota e un 304 non modificato altrimenti, come previsto. Ma il file viene restituito con un'intestazione Ultima modifica modificata errata che non riflette la vera data dell'ultima modifica.
Forse c'è qualche direttiva di configurazione di cui non sono a conoscenza?
Vorrei che i file restituiti da Lighty riflettessero direttamente le modifiche apportate sul disco o che potessero almeno invalidare la sua cache.
Aggiornamento per chiunque segua questa domanda: ho trovato un colpevole. Se aggiorno un file statico, Lighty non restituisce il nuovo contenuto, ma restituisce il nuovo Content-Length nelle intestazioni, con conseguente visualizzazione della spazzatura. Se comprimo il file utilizzando mod_compress, il problema scompare poiché mod_compress utilizza il proprio sistema di memorizzazione nella cache. Sfortunatamente, non riesco a comprimere tutti i file (ad esempio i file di immagine). Quindi è solo una soluzione parziale, ma ci tornerò più tardi e troverò una soluzione accattivante.