ホームページ > 記事 > CMS チュートリアル > ECSHOPのMySQLキャッシュクリアの紹介
ECSHOP のキャッシュは template/caches/article フォルダーに保存されます。時間が経つと、このフォルダーは非常に大きくなり、Web サイトの速度が低下します。彼のキャッシュが必要ない状況はたくさんあります。この記事では、ECSHOP キャッシュを無効にする方法について説明します。
ECSHOP のキャッシュには 2 つの部分があり、1 つは SMARTY のページ キャッシュ、もう 1 つは SQL クエリ結果のキャッシュです。どちらの部分も template/caches/ フォルダーに保存されます。この 2 つの機能をそれぞれオフにすれば、ECSHOP のキャッシュを完全に無効にすることができます。もちろん、必要に応じてそのうちの 1 つをオフにすることもできます。
推奨 (無料): ecshop
1. SMARTY のキャッシュをオフにする
Openincludes/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 クエリ結果キャッシュをオフにします
Openincludes/cls_mysql.php
Find
var $max_cache_time=3600;//最大的缓存时间,以秒为单位
Change to
var $max_cache_time=0;//最大的缓存时间,以秒为单位
ECShop キャッシュを制限または無効にするにはどうすればよいですか?論理的に言えば、FTP 経由でホスト スペース サーバーにログインし、「templates/caches」フォルダー内のキャッシュ ファイルをクリアするだけで済みます。ただし、より安全で確実な方法は、ecshop オンライン ストアのバックエンドに入り、「」をクリックすることです。右上隅にある「キャッシュをクリア」ボタンをクリックします。または、ecshop のキャッシュ機能を完全に無効にします。
1.ecshop の一部のデータ テーブルのキャッシュを無効にする
ecshop のキャッシュ フォルダー内のキャッシュ ファイルには、SQL クエリ結果キャッシュと SMARTY テンプレート ページ キャッシュが含まれます。 Webサイトを訪れるユーザーが多い場合、これらの一時キャッシュデータはECshopの「templates/caches」フォルダに保存されます。データ キャッシュはオンライン ストアの速度向上に一定の役割を果たしますが、キャッシュ ファイルが多すぎると多すぎます。キャッシュを無効にできるのは 2 つのテーブル favourable_activity、goods_activity
だけであるという人もいます。
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’)));
## に変更します。 #2 、ecshop のキャッシュを完全に無効にする
キャッシュ ファイルをクリアするには、ecshop オンライン ストアのバックエンドに定期的にログインする必要がありますが、これは怠け者にとっては非常に面倒です。次に、ecshop キャッシュを完全に無効にするだけです。 echsop キャッシュの無効化に関する Xiao Chong の記事を参照してください。Xiao Chong の特定のコードはバージョン 2.6.0 あたりです。 2.7 ecshop でキャッシュ変更を無効にする方法は同様です: 1. editplus を使用して include/cls_template.php を開き、次のコードをコメント アウトします: PHP コード 2. editplus を使用して include/cls_mysql.php を開き、max_cache_time = 300 を見つけて、300 を 03 に変更します。templates/compiled の下にあるファイルはクリアできますか?
templates /compiled の下にあるファイルはテンプレートでコンパイルされたファイルであり、クリアできます。ユーザーがオンラインストアを閲覧すると再生成されます。テンプレート フォルダーの主な問題は、キャッシュ内にキャッシュ ファイルが多すぎることです。ecshop キャッシュを定期的にクリアするか、完全に無効にすることができます。 ---------------------------------------- -- キャッシュクリアに関するアドバイス!! 現在のキャッシュクリアはかなり荒いことが分かりました! 以前と大きな変化はありません! 2.0.5.# と同じです。 ## バックグラウンドで変更操作がある限り、キャッシュ全体が失われます! 使用されるのはすべて $smarty->clear_all_cache();
欠点: 100,000 個の製品があり、それらがすべてある場合バックグラウンドでの 1 つの操作で 150,000 を超えるキャッシュ ファイルをクリアする必要があります:) これは少し極端なようです。
単なる例です。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 か月、カテゴリは 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のMySQLキャッシュクリアの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。