首頁  >  文章  >  CMS教程  >  介紹ecshop清除mysql緩存

介紹ecshop清除mysql緩存

coldplay.xixi
coldplay.xixi轉載
2021-03-15 10:25:202294瀏覽

介紹ecshop清除mysql緩存

ECSHOP的快取存放在templates/caches/文章夾下,時間長了這個資料夾就會非常龐大,拖慢網站速度。還有很多情況我們不需要他的快取。本文介紹停用ECSHOP快取的方法。

ECSHOP的快取有兩個部分,一部分是SMARTY的頁面快取;另一部分是SQL查詢結果的快取。這兩部分都是保存在templates/caches/資料夾下。只要我們分別關閉這兩個功能,就可以完全停用ECSHOP的快取。當然你也可以依照自己的需求關閉其中某一個。

推薦(免費):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(&#39;ECS_ROOT&#39;, substr(dirname(__FILE__), 0, -8));//前后台数字当然不一样了:)
//文章缓存
$cache_dir_article = ECS_ROOT.&#39;./templates_caches/article&#39;;
$cache_dir_article_cat = ECS_ROOT.&#39;./templates_caches/article_cat&#39;;
//商品缓存
$cache_dir_goods = ECS_ROOT.&#39;./templates_caches/goods&#39;;
$cache_dir_goods_cat = ECS_ROOT.&#39;./templates_caches/goods_cat&#39;;

前台商品內容和分類快取時間單獨設定長一些,如內容一個月,分類1天

修改後台,商品單獨修改的地方只刪除這個商品內容的快取

只要有修改操作就刪除商品分類快取和首頁快取!加入如下

$smarty->clear_cache(null, null, null, null, $cache_dir_goods_cat);//zouql:删除商品目录缓存,默认缓存时间
$smarty->clear_cache(&#39;goods.html&#39;, $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(&#39;clear&#39;, &$this, &$dummy, $tpl_file, $cache_id, $compile_id, $exp_time));
} else {
$_params = array(&#39;auto_base&#39; => $cache_dir,
&#39;auto_source&#39; => $tpl_file,
&#39;auto_id&#39; => $_auto_id,
&#39;exp_time&#39; => $exp_time);
require_once(SMARTY_CORE_DIR . &#39;core.rm_auto.php&#39;);
return smarty_core_rm_auto($_params, $this);
}
}

以上是介紹ecshop清除mysql緩存的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除