我正在使用lighttpd提供静态文件。我在定期更新的目录中有一堆图像。这将更改文件内容(和文件大小)以及修改日期,但不会更改文件名。
当我通过http访问文件时,不会考虑更新,因此lighty服务于旧文件。我可以手动将文件重命名为其他名称,然后lighttpd将返回404错误,如果重新命名文件,则将获得正确的更新版本。似乎lightty正在使用自己的某种缓存机制(很好)来返回静态文件。不幸的是,似乎在修改文件时该机制不会自我更新。
我通过Wireshark进行了检查,并且我的浏览器确实在对文件进行请求,这不是浏览器缓存问题。从空缓存中请求时,它返回200 OK,否则按预期返回304 Not Modified。但是,该文件返回的错误的Last-Modified标头不能反映实际的最后修改日期。
也许有一些我不知道的配置指令?
我希望lighty返回的文件能够直接反映磁盘上所做的更改,或者至少能够使其缓存无效。
以下问题的任何人的更新:我找到了罪魁祸首。如果我更新静态文件,Lighty不会返回新内容,但是会在其标头中返回新的Content-Length,从而导致显示垃圾内容。如果我使用mod_compress压缩文件,则问题会消失,因为mod_compress使用其自己的缓存系统。不幸的是,我无法压缩所有文件(例如图像文件)。因此,这只是部分修复,但我稍后会再进行讨论,并乐于找到解决方案。