ecshop清緩存
1. 怎麼修改ecshop緩存存放目錄
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, &$mmy,
$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);
}
}
2. 如何解決ecshop打開空白
1.運行了一段時間的ecshop突然打開是空白頁面
2.於是打開修改php.ini的display_errors的值為On,在打開iis對應站點的詳細錯誤,重啟iis後刷新網頁依然是空白的,
3.但是後台可以進行登陸,於是進入到後台中清空緩存後可以正常打開
4.當然我們也可以進行手動清除:
(1)打開FTP工具連接好主機進入網站根目錄找到文件temp這個文件打開
(2)將這三個文件夾內的文件全部刪除(caches、compiled、static_caches)
以上就是手動清理ECshop的緩存步驟,緩存功能在很多領域都有使用的。當網站更新網站後不將緩存清理感覺的話,更新的內容是無法查看的。
3. ECSHOP的ecs_sessions如何清理緩存
您需要登錄萬網控制台,打開資料庫,然後找到session表,清空即可。
4. 如何禁用ECSHOP緩存,如何關閉ECSHOP緩存
您好,針對這個問題,希望能幫到您:
ECSHOP的緩存分兩種,一種是SMARTY的頁面緩存;另一種是SQL查詢結果的緩存。
這兩種緩存都是保存在templates/caches/文件夾下。
只要我們分別關閉這兩個緩存,就可以完全禁用ECSHOP的緩存。
當然你也可以根據自己的需要關閉其中某一個。
1、關閉SMARTY的緩存:
打開includes/cls_template.php,找到下面一段
if(file_put_contents($hash_dir.'/'.$cachename.'.php','<?phpexit;?>'.$data.$out,LOCK_EX)===false)
{
trigger_error('can'twrite:'.$hash_dir.'/'.$cachename.'.php');
}
將這一部分注釋掉即可,改成
/*
if(file_put_contents($hash_dir.'/'.$cachename.'.php','<?phpexit;?>'.$data.$out,LOCK_EX)===false)
{
trigger_error('can'twrite:'.$hash_dir.'/'.$cachename.'.php');
}
*/
2、關閉SQL查詢結果緩存
打開includes/cls_mysql.php
找到
var$max_cache_time=3600;//最大的緩存時間,以秒為單位
改成
var$max_cache_time=0;//最大的緩存時間,以秒為單位
經過上面修改後,就已經將ECSHOP的頁面緩存和數據查詢緩存都禁用了,這樣當你做了任何修改後,前台都能馬上體現出最新的變化,但是對伺服器的壓力會比禁用緩存之前稍微大那麼一點。
希望能對您有所幫助,您也可以去ecshop模板堂的知識堂教程中查閱。
5. ecshop手機客戶端 wap怎樣清除緩存
您好,您可以進入ecshop網站後台,清除緩存。
6. ecshop求助怎麼解決這個問題。每次清除緩存就變成這樣了
這是因為當初通過後台備份時少了兩個表,一個是 ecs_sessi** ,一個是 ecs_sessi**_data ,所以我們就得想法重新建立這兩張表。
看下面方法:
分別將下面兩段SQL語句復制粘貼到「後台 》資料庫管理 》SQL查詢」的輸入框里提交即可。
CREATE TABLE IF NOT EXISTS `ecs_sessi**` (
`sesskey` char(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`expiry` int(10) unsigned NOT NULL DEFAULT '0',
`userid` mediumint(8) unsigned NOT NULL DEFAULT '0',
`adminid` mediumint(8) unsigned NOT NULL DEFAULT '0',
`ip` char(15) NOT NULL DEFAULT '',
`user_name` varchar(60) NOT NULL,
`user_rank` tinyint(3) NOT NULL,
`discount` decimal(3,2) NOT NULL,
`email` varchar(60) NOT NULL,
`data` char(255) NOT NULL DEFAULT '',
PRIMARY KEY (`sesskey`),
KEY `expiry` (`expiry`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `ecs_sessi**_data` (
`sesskey` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`expiry` int(10) unsigned NOT NULL DEFAULT '0',
`data` longtext NOT NULL,
PRIMARY KEY (`sesskey`),
KEY `expiry` (`expiry`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
注意:
1)我這里使用的是默認表前綴 ecs_ ,如果你的表前綴不是 ecs_ 請自行修改後 再提交
2)我這里使用的是UTF8字元集 如果你使用的是GBK字元集 也請自行修改後,再提交
7. ecshop緩存如何清除
進入後台,在右上角