2009-07-30 226 views
23

我有一个网站,由于准备不足的apache conf文件已指示用户缓存未来几年的网站URL。因此,当一个人访问该网站时,他们通常不会尝试甚至要求该网页。浏览器只是从缓存中加载HTML。如何强制浏览器刷新网页的缓存版本

本网站即将获得重大更新,我希望用户能够看到它。有没有办法强制用户实际重新请求网页?我担心,对于一些用户,除非他们碰巧按F5键,否则他们可能会看到旧网页数年。

回答

2

我认为没有办法做到这一点。如果他们从未联系过你的服务器,那么你无法对此做任何事情。

17

使用不同的URL。如果你的网站的主要入口点(如主索引文件)被缓存,那么你被搞砸了......也许你应该注册另一个域名?

+4

该网站在搜索引擎中排名第一;不同的网址在我们的搜索引擎优化惩罚案例中不起作用 – Chris 2009-07-30 16:38:09

+12

您可以通过添加URL参数(如时间戳)将其设为不同的网址:?new = 。这不会搞砸SEO。 – Julien 2010-03-08 17:48:24

4

有几个选项来实现这一 首先 在部分添加meta标签:

<meta http-equiv="pragma" content="no-cache" /> 

基本上浏览器将不缓存的页面。

另一种选择是设置会话,这将每次他们去时强制浏览到一个新的会话,从而使浏览器从服务器而不是缓存获取页面

<?php 
session_start(); 

$_SESSION = array(); 
session_destroy(); 

?> 

您可以添加这对你的网站几天,然后删除。 我真的不知道这是否会做,但也许你会发现它的每一个资源的有用

+12

如果浏览器在缓存中有页面,它将永远不会打到服务器,所以这根本没有帮助。 – ahockley 2009-07-30 16:11:01

+0

对..我的坏.. – Sorantis 2009-07-30 16:15:09

+1

是的,我刚刚给了这个尝试,它没有奏效。谢谢你的想法。 – Chris 2009-07-30 16:36:38

1

变更网址,

4

这是有争议的,如果你的“重大更新”只是在少数(2或3)星期,你只需要重新配置你的apache conf(html没有太多未来的东西 - 只有资产和内容很可能永远不会改变)。火狐缓存默认大约为50MB,并不是很多,因为图像也被缓存,现代网站有很多内容。

并不完美 - 但这就是我会做什么 - 当我不想或不能改变的URL;)

+0

这是我希望会发生的事情。我几周前更新了apache conf以删除缓存。看来真的没有办法强制刷新。 – Chris 2009-08-01 12:38:59

1

我意识到这个问题是很老了,但我有一个可行的解决方案:

当然你可以强制新的URL来避免常见的缓存(不是长期的)......

iee

  • 添加查询到静态的.js /的CSS/HTML文件
  • 添加元编译标记为无缓存
  • 服务器端重定向,无缓存,消除饼干,会话等

然而,在这样的情况下(以前编辑apache.conf长时间缓存),因为你不能改变域的搜索引擎优化的目的,有一个'粗糙的黑客',你可以使用这将最大限度地减少对搜索引擎的影响:

复制您的索引页(即index.php)到新页面(即,index_new.php)并编辑httpd.conf(或等效的),以便DirectoryIndex是新页面。然后,只需删除或移动旧页面,理论上应始终重定向到新页面。

I.e.在Debian/Ubuntu中:

cd /var/www 
cp index.php index_new.php 
sudo vim /etc/apache2/sites-enabled/000-default 

    <Directory /var/www/> 
     ... 
     DirectoryIndex index_new.php 
    </Directory> 

mv index.php index_old.php 
sudo service apache2 restart 

然后你去了。

1

年后很晚,但它可能会帮助某人在路上:如果您有任何 JavaScript文件未缓存到未来几年(即如果您有任何方式在缓存的站点上运行新的js ),添加一些js,将以编程方式清除缓存。一旦配置修复和/或更新完成,请删除缓存清除js。

Ctrl + F5 in jquery to clear browser cache

相关问题