You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
добавить событие для плагина что б влиять на эти параметры можнобыло даст возможность для разных страниц настраивать разный набор параметров. update from bugfix #2 добавить возможность влиять на AliasListing
Вот тут https://github.com/modxcms/evolution/blob/bugfix/manager/includes/document.parser.class.inc.php#L268 подключается файл с DocumentListing, и всегда по коду он берется из массива. А что если до создания кэша/после получения кэша вызывать событие, чтобы иметь возможность модифицировать этот массив (хотя бы пока так). Это бы позволило без гемороя решать задачи с кастомизацией кеширования сайтов любых объемов. Допустим исключить из кеша служебные страницы, страницы товаров (если они являются папками) и т.д. Master #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;
}
#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
Вот тут https://github.com/modxcms/evolution/blob/bugfix/manager/includes/document.parser.class.inc.php#L268 подключается файл с DocumentListing, и всегда по коду он берется из массива. А что если до создания кэша/после получения кэша вызывать событие, чтобы иметь возможность модифицировать этот массив (хотя бы пока так). Это бы позволило без гемороя решать задачи с кастомизацией кеширования сайтов любых объемов. Допустим исключить из кеша служебные страницы, страницы товаров (если они являются папками) и т.д.
Master #3 уменьшить чуток кеш за счет переносов строк
убрать из файла https://github.com/modxcms/evolution/blob/bugfix/manager/processors/cache_sync.class.processor.php переносы строк (нахрена они в кэше). Зачастую из-за этого получается сэкономить пару КБ. Что в конечном счете всяко положительно сказывается на производительности сайта
1.2.2 #4) разнести по файлам кеш елементов
Я бы еще хотел видеть разнесеные по файлам кэши плагинов/сниппетов/чанков/документов и т.д.) ($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
$params = $ GET;
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.
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;
}
}