ECSHOP 緩衝問題的解決方案

來源:互聯網
上載者:User

標籤:最大的   mpi   call   user   dir   function   版本   edit   hand   

ECSHOP的緩衝存放在templates/caches/文章夾下,時間長了這個檔案夾就會非常龐大,拖慢網站速度。還有很多情況我們不需要他的緩衝。模板堂整理本文介紹禁用ECSHOP緩衝的方法。   ECSHOP的緩衝有兩部分,一部分是SMARTY的頁面緩衝;另一部分是SQL查詢結果的緩衝。這兩部分都是儲存在templates/caches/檔案夾下。只要我們分別關閉這兩個功能,就可以完全禁用ECSHOP的緩衝。當然你也可以根據自己的需要關閉其中某一個。 /*1.關閉SMARTY的緩衝:  開啟includes/cls_template.php,找到下面一段   if (file_put_contents($this->cache_dir . ‘/’ . $cachename . ‘.php’, ‘<?php exit;?>’ . $data . $out) === false)       {           trigger_error(‘can\’t write:’ . $this->cache_dir . ‘/’ . $cachename . ‘.php’);       }--將此代碼注釋掉    2.關閉SQL查詢結果緩衝  開啟includes/cls_mysql.php  找到    var $max_cache_time=3600;//最大的緩衝時間,以秒為單位  改為     var $max_cache_time=0;//最大的緩衝時間,以秒為單位

 


如何限制或禁用ECShop緩衝呢?按道理只要ftp登入到主機空間伺服器,清除“templates/caches”檔案夾下的快取檔案,但比較安全穩妥的辦法是進入ecshop網店後台點擊右上方“清除緩衝”按鈕。還是完全禁用ecshop的緩衝功能。

一、禁用ecshop部分資料表緩衝。
ecshop裡caches檔案夾快取檔案包括sql查詢結果緩衝和SMARTY模板頁面緩衝。如果訪問網站的使用者一多,這些臨時的快取資料都被保持在ECshop的“templates/caches”檔案夾下。資料緩衝對提高網店速度有一定作用,但快取檔案一多也就過猶不及。有人說只對favourable_activity,goods_activity這2個表禁用緩衝即可。
開啟include/init.php,找到

PHP代碼
   
$db->set_disable_cache_tables(array($ecs->table(’sessions’), $ecs->table(’sessions_data’), $ecs->table(’cart’)));   
修改為

PHP代碼
   
$db->set_disable_cache_tables(array($ecs->table(’sessions’), $ecs->table(’sessions_data’), $ecs->table(’cart’), $ecs->table(’favourable_activity’), $ecs->table(’goods_activity’)));  
二、完全禁用ecshop緩衝
定期要登入ecshop網店後台清除快取檔案,對於懶人來說,這也挺嫌麻煩的。那乾脆完全禁用ecshop緩衝吧。參考小蟲的禁用echsop緩衝文章,小蟲的具體代碼是2.6.0左右的版本。2.7的ecshop禁用緩衝修改方法類似:

1. 用editplus開啟include/cls_template.php,把下面代碼注釋掉:

PHP代碼
   
  
2.用editplus開啟include/cls_mysql.php,找到 max_cache_time = 300,把300改為0即可

三、templates/compiled下的檔案是否可以清空?
templates/compiled下的檔案是模板編譯後檔案,可以清空。當使用者瀏覽網店後又會重建。templates檔案夾下的主要是caches裡快取檔案太多,你可以定期清空或完全禁用ecshop緩衝。

----------------------------------------------

關於清除緩衝的建議!!
發現現在的清除緩衝做的比較粗!和之前沒大變化啊!和2.0.5一樣.
只要後台隨便一個修改的操作,整個緩衝就都沒了!用的都是$smarty->clear_all_cache();
缺點:如果我有10萬商品,:),而且都被瀏覽過,我後台一個操作就要清楚15萬多快取檔案:)似乎極限了點
只是舉例!!,希望ECSHOP更加完美而已!

smarty裡面不是有這個函數麼?
clear_cache(),我小修改了下,增加了可以指定刪除某個目錄下的緩衝,用處是:可方便的刪除商品的分類緩衝!

2.0.5上我是這麼改的,另外在根目錄建立一個緩衝目錄templates_caches,裡面建立article,article_cat,goods,goods_cat,4個檔案夾分別放文章內容,文章列表,商品內容,商品列表的緩衝
例子:對商品,文章部分的修改
前台init.php和後台init.php加入如下代碼,我為了方便直接加在config.php裡面了
//緩衝目錄設定
define(‘ECS_ROOT‘, substr(dirname(__FILE__), 0, -8));//前後台數字當然不一樣了:)
//文章緩衝
$cache_dir_article = ECS_ROOT.‘./templates_caches/article‘;
$cache_dir_article_cat = ECS_ROOT.‘./templates_caches/article_cat‘;
//商品緩衝
$cache_dir_goods = ECS_ROOT.‘./templates_caches/goods‘;
$cache_dir_goods_cat = ECS_ROOT.‘./templates_caches/goods_cat‘;
複製代碼
前台商品內容和分類緩衝時間單獨設定長一些,如內容一個月,分類1天
修改後台,商品單獨修改的地方只刪除這個商品內容的緩衝
只要有修改操作就刪除商品分類緩衝和首頁緩衝!加入如下
$smarty->clear_cache(null, null, null, null, $cache_dir_goods_cat);//zouql:刪除商品目錄緩衝,預設緩衝時間
$smarty->clear_cache(‘goods.html‘, $goods_id, null, null, $cache_dir_goods);//zouql:刪除商品緩衝,預設緩衝時間
還有廣告管理等等等等等等等等地方要改!
前台使用者發表評論後自動刪除本商品緩衝等等..........


function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null, $cache_dir = null)
{

      if (!isset($cache_dir)) 
$cache_dir = $this->cache_dir;
if (!isset($compile_id))
         $compile_id = $this->compile_id;

       if (!isset($tpl_file))
         $compile_id = null;

       $_auto_id = $this->_get_auto_id($cache_id, $compile_id);

       if (!empty($this->cache_handler_func)) {
         return call_user_func_array($this->cache_handler_func,
                              array(‘clear‘, &$this, &$dummy, $tpl_file, $cache_id, $compile_id, $exp_time));
       } else {
         $_params = array(‘auto_base‘ => $cache_dir,
                        ‘auto_source‘ => $tpl_file,
                        ‘auto_id‘ => $_auto_id,
                        ‘exp_time‘ => $exp_time);
         require_once(SMARTY_CORE_DIR . ‘core.rm_auto.php‘);
         return smarty_core_rm_auto($_params, $this);
       }

}

ECSHOP 緩衝問題的解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.