簡體   English   中英

在單頁面上禁用/繞過Magento Full Page Cache

[英]Disable/Bypass Magento Full Page Cache on single page

如何禁用或繞過單頁的FPC? 我不想使用打孔,因為頁面上有幾個我需要動態的塊,我寧願修改一個配置/類來指定整個頁面不應該被緩存(類似於checkout的行為) )。

我對FPC的理解是它沒有用於“會話用戶”(登錄,添加到購物車等等)。 但是,當用戶登錄時,我看到FPC會影響頁面。如果我禁用FPC,那么頁面將按照需要運行。

以下是為特定控制器禁用FPC的解決方案(也可以擴展到特定操作)。

首先創建一個Observer來監聽controller_action_predispatch事件:

public function processPreDispatch(Varien_Event_Observer $observer)
{
    $action = $observer->getEvent()->getControllerAction();

    // Check to see if $action is a Product controller
    if ($action instanceof Mage_Catalog_ProductController) {
        $cache = Mage::app()->getCacheInstance();

        // Tell Magento to 'ban' the use of FPC for this request
        $cache->banUse('full_page');
    }
}

然后將以下內容添加到模塊的config.xml文件中。 這是在<frontend>部分:

<events>
    <controller_action_predispatch>
        <observers>
            <YOUR_UNIQUE_IDENTIFIER>
                <class>YOURMODULE/observer</class>
                <method>processPreDispatch</method>
            </YOUR_UNIQUE_IDENTIFIER>
        </observers>
    </controller_action_predispatch>
</events>

現在,Magento每次都會提供您的頁面並繞過FPC請求。

剛剛完成與Magento EE FPC的摔跤,沒有在緩存的CMS頁面上顯示核心消息。 核心消息在緩存類別和產品頁面上運行良好,但不適用於CMS頁面。 我發現通過將某個參數傳遞給頁面,您可以強制生成頁面而不是緩存中的服務器。

發現於:app / code / core / Enterprise / PageCache / Model / Processor / Default.php

/**
 * Disable cache for url with next GET params
 *
 * @var array
 */
protected $_noCacheGetParams = array('___store', '___from_store');

因此,可以創建一個具有HTTP GET查詢字符串的鏈接,該字符串將繞過FPC。

http://www.domain.com/?___store

這有助於解決我在插件重定向到帶有會話消息的引用URL時遇到的問題但如果引用者是CMS頁面,則在查看非CMS頁面之前不會顯示該消息。

Magento的FPC是一個復雜的野獸。

我已經使用以下教程克服了這個問題:

http://oggettoweb.com/blog/customizations-compatible-magento-full-page-cache/

這可能就是你所說的“打孔”,但這是我發現克服它的唯一方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM