ECSHOP의 캐시는 template/caches/article 폴더에 저장됩니다. 시간이 지남에 따라 이 폴더는 매우 커지고 웹 사이트 속도가 느려집니다. 그의 캐시가 필요하지 않은 상황이 많이 있습니다. 이 문서에서는 ECSHOP 캐싱을 비활성화하는 방법을 설명합니다.
ECSHOP의 캐시는 두 부분으로 구성됩니다. 하나는 SMARTY의 페이지 캐시이고, 다른 하나는 SQL 쿼리 결과 캐시입니다. 두 부분 모두 template/caches/ 폴더에 저장됩니다. 이 두 기능을 각각 끄면 ECSHOP의 캐시를 완전히 비활성화할 수 있습니다. 물론 필요에 따라 그 중 하나를 끌 수도 있습니다.
추천(무료): ecshop
1. SMARTY 캐시를 끄세요
includes/cls_template.php
를 열고 다음 섹션을 찾으세요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
//缓存目录设置 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';
2를 제거합니다. SQL 쿼리 결과 캐시를 끕니다.
includes/cls_mysql.php
를 열고 $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); } }
favourable_activity, products_activity
두 테이블에 대해서만 캐싱을 비활성화할 수 있다고 말합니다. 🎜🎜include/init.php를 열고 🎜🎜PHP 코드🎜rrreee🎜를 찾아 🎜🎜PHP 코드🎜rrreee🎜🎜로 변경합니다. 둘째, ecshop 캐시를 완전히 비활성화합니다🎜🎜🎜 정기적으로 ecshop 온라인 스토어 백엔드에 로그인합니다. 게으른 사람들을 위한 캐시 파일 지우기, 나에게는 이것이 꽤 귀찮은 일이다. 그런 다음 ecshop 캐싱을 완전히 비활성화하면 됩니다. echsop 캐시 비활성화에 대한 Xiao Chong의 기사를 참조하세요. Xiao Chong의 특정 코드는 버전 2.6.0 정도입니다. ecshop 2.7에서 캐시 수정을 비활성화하는 방법은 비슷합니다. 🎜🎜1. editplus를 사용하여 include/cls_template.php를 열고 다음 코드를 주석 처리합니다. 🎜🎜PHP code🎜🎜2. editplus를 사용하여 include/cls_mysql.php를 엽니다. max_cache_time = 300을 찾으세요. 300을 0🎜🎜🎜3으로 변경하면 됩니다. template/compiled 아래의 파일을 지울 수 있나요?🎜🎜🎜templates/compiled 아래의 파일은 템플릿 컴파일된 파일이므로 지울 수 있습니다. 사용자가 온라인 상점을 탐색하면 다시 생성됩니다. 템플릿 폴더의 가장 큰 문제는 캐시에 캐시 파일이 너무 많다는 것입니다. 정기적으로 ecshop 캐시를 지우거나 완전히 비활성화할 수 있습니다. 🎜🎜—————————————————————————————————————————————— ———————————————🎜🎜캐시 삭제에 대한 제안!!🎜🎜현재 캐시 삭제가 비교적 거친 것으로 확인되었습니다. 이전과 동일합니다! 2.0.5.🎜🎜백그라운드에서 임의 수정 작업을 수행하는 한 전체 캐시가 사라집니다! 사용하기 모두 $smarty->clear_all_cache();🎜🎜단점: 제품이 100,000개이고 다 찾아봤으니 백그라운드에서 한 번에 150,000개가 넘는 캐시 파일을 지워야 할 것 같아요 :) 좀 극단적인 것 같아요🎜🎜예를 들어!! ECSHOP이 더 완벽했으면 하는 바램이죠! 🎜🎜smarty? 🎜🎜clear_cache() 함수에 약간의 수정을 가해 특정 디렉토리의 캐시를 삭제하도록 지정할 수 있도록 추가했습니다. 목적은 다음과 같습니다. 상품 카테고리 캐시를 삭제하는 방법입니다. 그리고 2.0.5에서는 루트디렉토리에 캐시디렉토리 templates_caches
를 생성하고, article, Article_cat, Goods, Goods_cat
, 4개의 폴더를 각각 생성했습니다. 기사 내용, 기사 목록, 상품 내용, 상품 목록 캐시🎜🎜예: 상품 및 기사 부분 수정🎜🎜프론트엔드 init.php, 백엔드 init.php에 다음 코드를 추가하고 다음을 추가했습니다. 편의를 위한 코드 config.php에 직접 추가됨🎜rrreee🎜프런트엔드 제품 콘텐츠와 카테고리 캐시 시간을 별도로 길게 설정(콘텐츠는 1개월, 카테고리는 1일)🎜🎜제품이 개별적으로 수정되는 백엔드 수정 , 본 상품 콘텐츠의 캐시만 삭제됩니다🎜🎜 수정사항이 있는 한, 상품 카테고리 캐시와 홈페이지 캐시를 삭제하고 다음 🎜rrreee🎜 및 광고관리 등을 추가해주세요! . 등이 변경됩니다! 🎜🎜 프런트엔드 사용자 댓글 등 이후 제품 캐시가 자동으로 삭제됩니다.........🎜rrreee위 내용은 ecshop Clear mysql 캐시 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!