2014-04-09 21 views
0

我想知道我是否可以從緩存中排除某些HTML。我正在使用MediaWiki軟件。所以任何MediaWiki解決方案或任何其他PHP解決方案也可以工作。不緩存一些HTML

我的Mediawiki頁面已被緩存,並且正在實施幾天後過期的站點通知功能。但是,當頁面被緩存時,它不會兌現我的到期日期並一直顯示。所以我想從緩存中排除那部分代碼。我將它作爲MediaWiki擴展來實現。

謝謝

+1

瀏覽器緩存整個頁面,而不是部分 –

+0

瀏覽器緩存整個資源,而不是整個頁面。 HTML與頁面上的其他資源是分開的。如果您有一些JavaScript在您的頁面上顯示禁止緩存的通知,則仍然可以使頁面的HTML緩存並具有您要查找的效果。 – Brad

回答

0

MediaWiki緩存在許多層中工作。除了客戶端的緩存之外,還有一些server side caches。 (正如你可能已經注意到的那樣,MW我聲名狼借地慢,除非你實現至少一些緩存功能。)

首先你要弄清楚哪些天文臺被緩存。正如我敢肯定,大家都知道,有more than one place在這裏你可以設置網站通知:

  • MediaWiki:Anonnotice
  • MediaWiki:Sitenotice
  • $wgSiteNoticeLocalSettings.php
  • 通過幾個不同的擴展

他們是否都呆在網頁上太久了?
其次,你可以嘗試和揣摩出你的網站通知緩存:

  • 有什麼區別,如果你是在/註銷?對於匿名用戶,接口的某些部分可能會更難以緩存。
  • 如果清除瀏覽器緩存,消息是否消失?
  • 嘗試和禁用Varnish(或Squid),如果您正在使用它們中的任何一個。
  • 暫時停用$wgEnableParserCache,看看它有什麼不同。
  • 在您的LocalSettings.php設置$wgCachePages = false;,試圖禁止客戶端緩存
+0

我沒有使用任何內置的網站通知功能。我在我的網站上使用pNotify來顯示維護通知。 sysop可以設置一個通知來顯示一段時間。在那段時間裏,我要麼不想讓瀏覽器緩存該文件,要麼不要讓JS和HTML代碼的那部分緩存。 由於MediaWiki從緩存的html頁面加載內容,因此清除我的瀏覽器緩存無濟於事。 –

+0

是否有任何理由不使用內置功能,已經爲您處理所有兌現邏輯? – leo

+0

是的,我們在網站通知區域永久顯示其他內容。所以我們不能使用網站通知功能。此外,我們希望網站通知由我爲其創建的管理控制檯中的非技術系統用戶管理。現場通知應自動開始在指定的日期/時間顯示,並且應該在指定的日期/時間停止顯示。此外,網站通知在解散後不應顯示指定的天數。我無法使用內置的網站通知功能。 –