2009-07-30 313 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