2012-09-18 140 views
0

Apache缓存图像,我不知道在哪里寻找。我正在清除浏览器缓存,甚至尝试从未访问过该网站的新浏览器,并获取旧图像。 15分钟左右后,新图像将加载。 Apache甚至会在发送一个旧文件的时候在报头中报告正确的(新)文件大小。Apache缓存图像

我不知道在哪里寻找这个。我的服务器是Ubuntu 11.这只是在我的本地开发服务器上,并且在发生这种情况时认为我的代码无法正常工作令人沮丧。任何帮助,将不胜感激。

回答

2

我不知道你的图像文件的类型(它是一个NFS或SMB),但有时的Apache2禁用EnableSendfile指令可以保证,因为不像大多数人认为,Apache不执行静态文件缓存,如果文件类型为NSF

Apache Core Documentation

该指令控制的httpd是否可以使用sendfile的支持 内核文件内容发送到客户端。默认情况下,当 处理请求时不需要访问文件 中的数据 - 例如,当传送静态文件时 - 如果OS 支持,Apache使用sendfile传送文件内容而不读取文件它。

的解决方案是以下行添加到您的配置文件,/etc/apache2/apache.conf

EnableSendfile off

+0

哇这是旧的。我最终发现这是问题所在,但这花了相当长的一段时间。 apache尝试访问的文件位于网络驱动器上。 (virtualbox如何与主机共享文件)这是发生缓存的地方。 –

+0

@theHampster酷,它解决了你的问题,我在这两天前。花时间去弄明白了;) – ambodi

0

尝试禁用缓存明确地图片:

SetEnvIf Request_URI "\.(gif)|(jpg)|(png)$" image_request 
Header set Cache-Control "private, no-store, no-cache, must-revalidate" env=image_request 

BTW,Live HTTP Headers是Firefox的一个很好的插件,显示你所有的请求/响应头。我发现它对调试标题数据很有帮助。

+0

谢谢你,现在其中几十配置文件应该走这个? (这是Ubuntu ...) –

+0

放入'httpd.conf'中,它是主配置文件。其他人通常通过“Include ...”包含它。您可能还需要取消注释'LoadModule headers_module modules/mod_headers.so'行来使用'Header'指令。 –

+0

对不起,花了一段时间。 –