Heim >CMS-Tutorial >ECShop >Einführung in ecshop zum Löschen des MySQL-Cache

Einführung in ecshop zum Löschen des MySQL-Cache

coldplay.xixi
coldplay.xixinach vorne
2021-03-15 10:25:202356Durchsuche

Einführung in ecshop zum Löschen des MySQL-Cache

Der Cache von ECSHOP wird im Ordner „templates/caches/article“ gespeichert. Mit der Zeit wird dieser Ordner sehr groß und verlangsamt die Website. Es gibt viele Situationen, in denen wir seinen Cache nicht brauchen. In diesem Artikel wird beschrieben, wie Sie das ECSHOP-Caching deaktivieren. Der Cache von

ECSHOP besteht aus zwei Teilen: Der eine ist der Seitencache von SMARTY und der andere der Cache der SQL-Abfrageergebnisse. Beide Teile werden im Ordner templates/caches/ gespeichert. Solange wir diese beiden Funktionen deaktivieren, können wir den Cache von ECSHOP vollständig deaktivieren. Natürlich können Sie eine davon je nach Bedarf auch ausschalten.

Empfohlen (kostenlos): ecshop

1. Schalten Sie den Cache von SMARTY aus

Öffnen Sie includes/cls_template.php und suchen Sie den folgenden Abschnittincludes/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

//缓存目录设置
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;;

- Kommentieren Sie diesen Code Entfernen

2. Deaktivieren Sie den SQL-Abfrageergebnis-Cache

Öffnen Sie includes/cls_mysql.php

Suchen Sie

$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:删除商品缓存,默认缓存时间

und ändern Sie es in

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);
}
}

Wie kann ich den ECShop-Cache einschränken oder deaktivieren? Logischerweise müssen Sie sich nur per FTP beim Host-Space-Server anmelden und die Cache-Dateien im Ordner „templates/caches“ löschen. Eine sicherere Möglichkeit besteht jedoch darin, das Backend des ecshop-Onlineshops aufzurufen und auf „ zu klicken. Klicken Sie auf die Schaltfläche „Cache löschen“ in der oberen rechten Ecke. Oder deaktivieren Sie die Caching-Funktion von Ecshop vollständig.

🎜 1. Deaktivieren Sie das Caching einiger Datentabellen in Ecshop. 🎜🎜🎜 Zu den Cache-Dateien im Cache-Ordner in Ecshop gehören der SQL-Abfrageergebnis-Cache und der SMARTY-Vorlagenseiten-Cache. Wenn zu viele Benutzer die Website besuchen, werden diese vorübergehend zwischengespeicherten Daten im Ordner „templates/caches“ von ECshop gespeichert. Das Zwischenspeichern von Daten spielt eine gewisse Rolle bei der Verbesserung der Geschwindigkeit von Online-Shops, aber zu viele zwischengespeicherte Dateien sind zu viel. Einige Leute sagen, dass das Caching nur für die beiden Tabellen favourable_activity, good_activity deaktiviert werden kann. 🎜🎜Öffnen Sie include/init.php, suchen Sie den 🎜🎜PHP-Code🎜rrreee🎜 und ändern Sie ihn in 🎜🎜PHP-Code🎜rrreee🎜🎜Zweitens: Deaktivieren Sie den Ecshop-Cache vollständig.🎜🎜🎜Melden Sie sich regelmäßig im Backend des Ecshop-Onlineshops an Cache-Dateien löschen, für faule Leute Für mich ist das ziemlich mühsam. Dann deaktivieren Sie einfach das Ecshop-Caching vollständig. Weitere Informationen finden Sie im Artikel von Xiao Chong zum Deaktivieren des Echsop-Caches. Der spezifische Code von Xiao Chong ist etwa Version 2.6.0. Die Methode zum Deaktivieren der Cache-Änderung in 2.7 ecshop ist ähnlich: 🎜🎜1. Öffnen Sie include/cls_template.php und kommentieren Sie den folgenden Code aus: 🎜🎜PHP-Code🎜🎜2. Verwenden Sie editplus, um include/cls_mysql.php zu öffnen Finden Sie max_cache_time = 300. Ändern Sie einfach 300 in 0🎜🎜🎜3. Können die Dateien unter „templates/compiled“ gelöscht werden?🎜🎜🎜Die Dateien unter „templates/compiled“ sind mit Vorlagen kompilierte Dateien und können gelöscht werden. Es wird neu generiert, wenn der Benutzer den Online-Shop durchsucht. Das Hauptproblem im Vorlagenordner besteht darin, dass sich zu viele Cache-Dateien in den Caches befinden. Sie können den Ecshop-Cache regelmäßig leeren oder ihn vollständig deaktivieren. 🎜🎜————————————————————————————————————————————— ———————————————— 🎜🎜Vorschläge zum Leeren des Caches!!🎜🎜Ich habe festgestellt, dass das aktuelle Löschen des Caches relativ grob ist. Es ist das Gleiche! wie 2.0.5.🎜🎜Solange ein zufälliger Änderungsvorgang im Hintergrund ausgeführt wird, ist der gesamte Cache verschwunden! Verwenden Sie alle sind $smarty->clear_all_cache();🎜🎜Nachteile: Wenn ich 100.000 Produkte habe und Sie wurden alle durchsucht, ich muss mehr als 150.000 Cache-Dateien in einem Vorgang im Hintergrund löschen :) Es kommt mir etwas extrem vor🎜🎜Nur zum Beispiel!! Ich hoffe, dass ECSHOP perfekter wird, nicht wahr? Funktion in 🎜🎜smarty? 🎜🎜clear_cache(), ich habe eine kleine Änderung vorgenommen und hinzugefügt, dass Sie den Cache in einem bestimmten Verzeichnis löschen können. Der Zweck ist: Es ist praktisch, den Produktkategorie-Cache zu löschen Ich habe es in 2.0.5 geändert. Außerdem habe ich ein Cache-Verzeichnis templates_caches im Stammverzeichnis erstellt und article, Article_cat, Goods, Goods_cat bzw. 4 Ordner gespeichert Artikelinhalt, Artikelliste, Produktinhalt und Cache der Produktliste🎜🎜Beispiel: Änderung der Produkt- und Artikelteile🎜🎜Fügen Sie den folgenden Code zu Front-End init.php und Back-End init.php hinzu. Ich habe Folgendes hinzugefügt Code zur Vereinfachung Direkt zu config.php hinzugefügt🎜rrreee🎜Der Front-End-Produktinhalt und die Kategorie-Cache-Zeit werden separat länger eingestellt, z. B. ein Monat für den Inhalt und ein Tag für die Kategorie🎜🎜Ändern Sie das Backend, wo das Produkt individuell geändert wird , nur der Cache dieses Produktinhalts wird gelöscht🎜🎜 Solange es Änderungen gibt, löschen Sie den Produktkategorie-Cache und den Homepage-Cache und fügen Sie Folgendes hinzu: 🎜rrreee🎜 und Werbeverwaltung usw. usw. usw. usw . usw. zu ändern! 🎜🎜 Produktcache nach den Front-End-Benutzerkommentaren usw. automatisch löschen. ........🎜rrreee

Das obige ist der detaillierte Inhalt vonEinführung in ecshop zum Löschen des MySQL-Cache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen