Browse Source

#3601 Block cache issues

Alex Trofimov 4 years ago
parent
commit
b63123e58f

+ 3 - 2
modules/base/general/classes/BxBaseModGeneralPageEntry.php

@@ -142,9 +142,10 @@ class BxBaseModGeneralPageEntry extends BxTemplPage
 
     protected function _getPageCacheParams ()
     {
+        $s = parent::_getPageCacheParams ();
         if (!$this->_aContentInfo)
-            return '';
-        return $this->_aContentInfo[$this->_oModule->_oConfig->CNF['FIELD_ID']]; // cache is different for every entry
+            return $s;
+        return $s . $this->_aContentInfo[$this->_oModule->_oConfig->CNF['FIELD_ID']]; // cache is different for every entry
     }
 }
 

+ 3 - 3
template/scripts/BxBasePage.php

@@ -181,7 +181,7 @@ class BxBasePage extends BxDolPage
 
         $this->_setSubmenu(array());
 
-        if (!getParam('sys_page_cache_enable') || !$this->_aObject['cache_lifetime']) {
+        if (!getParam('sys_page_cache_enable') || !$this->_aObject['cache_lifetime'] || (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'POST')) {
             $sPageCode = $this->_getPageCode();
         }
         else {
@@ -493,7 +493,7 @@ class BxBasePage extends BxDolPage
 
     protected function _getBlockCodeWithCache($aBlock, $iAsync = 0)
     {
-        if (!getParam('sys_pb_cache_enable') || !$aBlock['cache_lifetime'] || $iAsync) {
+        if (!getParam('sys_pb_cache_enable') || !$aBlock['cache_lifetime'] || $iAsync || (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'POST')) {
             $sBlockCode = $this->_getBlockCode($aBlock, $iAsync);
         }
         else {
@@ -938,7 +938,7 @@ class BxBasePage extends BxDolPage
      */
     protected function _getPageCacheParams ()
     {
-        return '';
+        return md5(serialize($_GET) . bx_lang_name());
     }
 
     /**

+ 2 - 1
template/scripts/BxBasePageAccount.php

@@ -94,7 +94,8 @@ class BxBasePageAccount extends BxTemplPage
 
     protected function _getPageCacheParams ()
     {
-        return getLoggedId(); // cache is different for every account
+        $s = parent::_getPageCacheParams ();
+        return $s . getLoggedId(); // cache is different for every account
     }
 }