应用缓存在哪里 - Apache,还是浏览器?

时间:2012-11-28 14:00:46

标签: php firefox caching apache2 virtualbox

我正在运行安装了CentOS 5.8的VirtualBox服务器,为希望后端使用1366px x 768px固定宽度布局而不是现有1024px x 768px的客户开发新的管理界面。

httpd server is 'stock' Apache/2.2.3 as supplied as part of CentOS 5.8

php is 'stock' PHP 5.3.3 as supplied as part of CentOS 5.8

大部分工作都是对css文件进行更改以利用额外的宽度,因为它完全是关于客户端的布局。

问题是某些文件正在缓存,我没有看到我对css文件所做的更改。 Shift F5和Ctrl F5在客户端浏览器上没有区别。

这让我疯狂,需要太长时间才能解决,所以我发帖是为了寻求帮助。关于.htaccess调整并在链接css文件中添加参数,我尝试了一些假定的“解决方案”,但都无济于事

我觉得这是一个httpd问题,但许多所谓的“专家”都坚持认为这是一个浏览器问题。我已经在MS Exploder,Opera,Chrome和Opera Mobile Emulator中测试过,并没有立即看到css的变化。

我希望有人可以提供帮助,因为这必须让其他开发人员感到沮丧。

如何在VirtualBox CentOS环境和Firefox v17上禁用所有缓存?

3 个答案:

答案 0 :(得分:2)

我有同样的问题。我在这里找到了解决方案:

http://www.danhart.co.uk/blog/vagrant-virtualbox-modified-files-not-updating-via-nginx-apache

问题是VirtualBox的共享文件夹不完全支持sendfile()所以你必须在你的apache / nginx配置文件中关闭它:

apache: EnableSendfile off

nginx: sendfile off;

它对我有用

答案 1 :(得分:0)

缓存可以在多个级别进行:服务器,浏览器或其间(代理,ISP,路由器等)。

您是否安装了任何服务器端缓存软件? Varnish,Pagespeed或类似的东西?

您可以通过向文件名添加变量URL查询字符串来中断缓存 - 例如,加载mystyle.css?r=34234235而不是mystyle.css。更改数字将导致强制重新加载为没有缓存的新URL,无论缓存在何处进行。

直接回答您的问题:在Firefox中,您可以通过打开“选项”窗口,“高级选项”,“网络”选项卡,最终清除缓存。这里有一个“清除缓存”按钮。如果它是浏览器缓存问题,这应该可以解决您的问题。这里还有一个功能来管理缓存大小。将此设置为零以防止firefox缓存任何内容(但要准备好加载页面的速度要慢得多)。

答案 2 :(得分:0)

感谢。

这不是路由器或ISP问题,因为服务器只是托管在VirtualBox容器中,文档根目录指向已安装的共享文件夹。

我正在使用这种方法,因为我必须支持几个不同的网站,一些主机运行php v5.2,其他主机运行在v5.3上。这也意味着我可以轻松检查有关已弃用功能的问题。

我尝试将addon查询字符串用于样式表名称,但是“查看源代码”显示了新名称,但内容仍然是“旧”表。

这不是一个浏览器问题,因为Chrome,IE和Firefox都显示相同的问题,所以它肯定是Apache服务器。

没有安装服务器端软件,这是CentOS 5.8 DVD中的简单“yum install httpd *”。

我通过创建work-in-progress.php并在文件顶部包含以下内容来解决缓存的css问题:

<?php
header("Content-type: text/css; charset: UTF-8");
?>

然后我将样式表加载为&lt; head&gt;中的最后一项。使用.php扩展名。

<link rel='stylesheet' type='text/css' href='work-in-progress.php'>

这有点俗气,但至少它适用于css

我还需要解决Apache配置中要更改的参数,因为图像也被缓存,除非我每次修改背景图像时都更改文件名,否则我仍然可以使用“旧”图像。

我尝试在进行更改后尝试重新启动服务httpd,但这似乎没有任何影响。