該任務相對簡單:如何根據Drupal中的Cookie提供不同的緩存版本的頁面?
Drupal網站顯示帶縮略圖的文章列表。有些訪問者希望通過單擊按鈕/鏈接來查看圖片,並保存該首選項。
例如http://patterntap.com/collections/index/
的問題是所有遊客都是匿名的,並給予一定的交通,啓用頁面緩存。
我的想法是使用一些簡單的JavaScript來設置cookie,刷新頁面並根據cookie值(或其存在/不存在)顯示或隱藏圖像。
除了Drupal早期提供緩存頁面和修改緩存版本的唯一快捷方式,我可以通過黑客手段包括/ bootstrap.inc並將自定義類添加到主體類,然後使用css隱藏圖像。
我知道一個非常錯誤的方法。但我想知道是否有一種方法可以保存不同版本的頁面並提供正確的版本?
編輯:
- 需要保持相同的URI
- 的JS來顯示/隱藏圖像,而無需重新加載,並設置Cookie已經到位
hook_boot()
是不是真的被稱爲緩存的網頁,所以不能通過自定義模塊來做- .htaccess mods?
編輯/解決方案: 最後與Rimian的建議一起去了。但是可以使用我們自己的cache.inc實現完成任務,如Mobile Tools模塊中所示。具體來說,通過擴展cache.inc並更新settings.php以包含
$conf['page_cache_fastpath'] = FALSE;
$conf['cache_inc'] = 'path/to/my/module/my_module_cache.inc';
我想不出有什麼辦法可以在Drupal中解決這個問題,短缺黑客bootstrap.inc。你有沒有考慮過把它作爲Drupal核心開發者的建議? – anschauung 2010-08-25 01:24:32
*嘆息* 沒有考慮,但可能是一個很好的呼籲,建議它的核心開發者。 我剛剛意識到,這可能是通過結合[jeffreymb](http://stackoverflow.com/users/107768/jeffreymb)的建議,使用GET變量和基於cookie的.htaccess重寫。 理論上,GET變量可以是透明的。 **滾動袖子** – zerolab 2010-08-25 22:30:47
自定義cache.inc實現在6.x網站上運行良好。大多數情況下,我的cache.inc是標準核心,但我添加了page_cache_fastpath()函數。它的任務是在數據庫加載之前檢測客戶端狀態,然後爲所有相關緩存表設置自定義db_prefix。我以前在我的.install文件中創建了這些表。通過這種方式,核心的所有標準數據庫和緩存功能都可以在不同的表格上完美工作。所以你根據你的標準有效地獲得多個緩存。 – 2014-04-18 15:06:46