Skip to content

Cache by Agel_nash  #29

@Dmi3yy

Description

@Dmi3yy

#1 Настройки кеширования документа

https://github.com/modxcms/evolution/blob/bugfix/manager/includes/document.parser.class.inc.php#L497
Вот это дело вынести в методб т.е. зачастую бывает ситуация, когда плагином/сниппетом влияют на GET массив и уже https://github.com/modxcms/evolution/blob/bugfix/manager/includes/document.parser.class.inc.php#L743 получается совсем не то

  • добавить событие для плагина что б влиять на эти параметры можнобыло даст возможность для разных страниц настраивать разный набор параметров.
    update from bugfix #2 добавить возможность влиять на AliasListing
  1. Вот тут https://github.com/modxcms/evolution/blob/bugfix/manager/includes/document.parser.class.inc.php#L268 подключается файл с DocumentListing, и всегда по коду он берется из массива. А что если до создания кэша/после получения кэша вызывать событие, чтобы иметь возможность модифицировать этот массив (хотя бы пока так). Это бы позволило без гемороя решать задачи с кастомизацией кеширования сайтов любых объемов. Допустим исключить из кеша служебные страницы, страницы товаров (если они являются папками) и т.д.
    Master #3 уменьшить чуток кеш за счет переносов строк

  2. убрать из файла https://github.com/modxcms/evolution/blob/bugfix/manager/processors/cache_sync.class.processor.php переносы строк (нахрена они в кэше). Зачастую из-за этого получается сэкономить пару КБ. Что в конечном счете всяко положительно сказывается на производительности сайта
    1.2.2 #4) разнести по файлам кеш елементов

  3. Я бы еще хотел видеть разнесеные по файлам кэши плагинов/сниппетов/чанков/документов и т.д.) ($this->pluginElvent/chunkCache/snippetCache/DocumentListing) и т.д.
    fix mysql_info #5 Сохранять в кеш

Для сниппетов и чанков добавить галочку: сохоранять в кэш (в базе даже есть поле cache_type)
[07.10.14, 10:18:57] Agel_Nash: а ты чанки в кэш пихать и не будешь если галочка сохранять в кэш снята.
[07.10.14, 10:19:44] Agel_Nash: Только метод getChunk нужно подправить как это в runSnippet https://github.com/modxcms/evolution/blob/bugfix/manager/includes/document.parser.class.inc.php#L2395
[07.10.14, 10:19:59] Agel_Nash: чтобы он подгружался из базы если нет чанка в кэше
[07.10.14, 10:20:32] Agel_Nash: сам подумай, зачем тебе чанк письма с сообщением об успешном заказе на странице регистрации?
[07.10.14, 10:21:02] Agel_Nash: а +1 запрос на странице оформления заказа это не так уж и долго (учитывая, что поиск идет по PrimaryKey индексу + чанков как правило не бывает больше 100)
[07.10.14, 10:21:58] Agel_Nash: Зато все чанки это распухание глобального кеша который реально и так из-за DocumentListing распухает

http://hastebin.com/vebijisufu.php
class DocumentParser{
protected $hashKey = null;
public getCacheFolder(){
return MODX_BASE_PATH."assets/cache";
}
protected getHashFile($key){
return $this->getCacheFolder()."/docid_" . $key . ".pageCache.php";
}
public function checkCache($id){
$key = $id;
if ($this->config['cache_type'] == 2) {
$key = $this->getPageHash($id);
}
$this->hashKey = null;
$this->getCacheFolder($key);
......
}
public function getPageHash($id){
$hash = '';
if (!empty($_GET)) {
// Sort GET parameters so that the order of parameters on the HTTP request don't affect the generated cache ID.
$params = $GET;
ksort($params);
$hash = md5(http_build_query($params));
$tmp = $this->invokeEvent("OnWebChangePassword", array ("hash" => $hash, "id" => $id));
$hash = $tmp === false ? $id : "
".$hash;
}
return $hash;
}
public function postProcess(){
$this->hashKey;
}

}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions