2013-04-04 148 views
0

我讀過所有的地方,我想弄清楚,如果我理解緩存的方式發生在Drupal 6,我們有一個具有實時股票行情的一個網站。我們啓用了Drupal緩存功能,因此股票價格最終會被緩存並凍結在特定位置。我想我可以處理它的一種方式是將自動收報器放在我在自定義模塊中創建的塊中,並設置BLOCK_NO_CACHE,但是如果我正確理解這一點,如果啓用了站點緩存,則會將整個頁面緩存起來,包括無論其各自的緩存設置如何,它上面的任何和所有塊。它是否正確?那麼,我無法利用網站緩存,如果我有某些不應該緩存的點?有誰知道我可能能夠用來獲得兩全其美的另一種解決方案嗎?爲了能夠進行網站緩存,但也有實時股票行情?順便說一下,股票代碼正在向雅虎財務API發出JSON請求以獲取報價。Drupal的6緩存和塊

+0

也許我失去了一些東西,但如果你的股票是將請求發送到雅虎這種情況發生在用戶的瀏覽器和雅虎API服務器之間。 Drupal在這種情況下沒有任何緩存,您的問題可能在其他地方... – pamatt 2013-04-04 22:40:43

+0

對不起,pamatt,我不清楚。它實際上是通過使用page.tpl.php文件中的file_get_contents()來完成的,但是你是對的,如果我將它移動到可能使用jQuery並執行.ajax調用,這可能不會受到緩存的影響。我會測試一下。 – 2013-04-04 23:48:44

回答

1

你是正確的,該指令BLOCK_NO_CACHE只適用於塊級。但是,當啓用頁面緩存時,Drupal會緩存整個頁面(其中也包含該塊)。但是這隻適用於匿名用戶。 Drupal的理念是匿名用戶的內容總是相同的,所以他們得到了緩存頁面。但是這不適用於經過驗證的用戶。由於不同的用戶可能對頁面的某些部分具有不同的訪問權限(例如,對於管理員來說,鏈接塊的外觀與普通用戶不同)。

你可能想看看這個討論:BLOCK_NO_CACHE not working for anonymous users

而且還有一個解決方案,你會在這個討論絆倒。這是這個模塊:Ajax Blocks。從模塊中提取的描述:

允許當頁面被匿名用戶觀看裝載 後通過附加的AJAX請求加載一些塊整個緩存頁面。它是 適合於大多數情況下是靜態的網站,匿名用戶的頁面緩存是一個很大的好處,但有一些 信息必須是動態的。

+0

太棒了,聽起來很完美。謝謝! – 2013-04-04 23:44:45