Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как убрать причины очистки кэша DLE custom?

Как убрать причины очистки кэша DLE custom?


     13.05.2019    cache, dle    Все вопросы » Общие вопросы по PHP    1500

вопрос
Всем привет. Вопрос тут возник, делаю оптимизацию своего сайта показатели улучшил но вот в чем никак не могу разобраться, а в документации не нашел ответа.

На главной странице у меня много {custom} новостей , все с тегом cache="yes" все кешируется прекрасно и проблем с этим нет. Но кэш очень часто чистится, не так как в настройках я указал (120 мин) . Кэш главной страницы чистится почти каждые 10-15 минут а это 20 запросов в БД и следовательно долгая загрузка страницы. Почему она так часто чистится? Ковырял файл show.custom Там вообще ни слова про create_cache и суффиксы, сейчас дальше по ищу но решил предварительно здесь спросить. Может кто сталкивался.

Ответа пока нет


4 комментария

Flash
Эксперт

Flash - 13 мая 2019 19:07 -

Кэшируется в функции "custom_print" в файле "\engine\modules\functions.php". Можно попробовать увеличить время жизни кэша например, в два раза, если никак не отразится, значит явно что-то не то.

kaylos98
Юзер

kaylos98 - 13 мая 2019 20:57 -

Так как раз кэш и так большой 120 минут. Только заметил что даже при редактировании комментариев пользователей, идет очистка кеша на главной. Сижу думаю может префикс поменать с news на archives. Но как часто он чистится. Мне бы что только при добавлении новостей была очистка. А на dle сайте не особо нашлось информации о кэше.

nowheremany
Эксперт

nowheremany - 14 мая 2019 10:20 -

Вы можете посмотреть вызовы функции clear_cache.
Помимо добавления новостей, кэш чиститься в том числе и при изменении комментариев, рейтинга...

Благодарность принимаю тут Связь

kaylos98
Юзер

kaylos98 - 18 мая 2019 11:36 -

Решил проблему следующим образом. Убрал очистку кеша при редактировании и добавлении новости. Теперь он не чистит наглым образом все "news_" и добавил к каждому блоку с выводом новостей персональную ссылку очистки кэша именно для этого блока. За счет этого при добавлении или редактировании жму на главной по ссылке в нужном custom блоке и чищу кэш только для него персонально. Это для меня удобнее, кеш теперь живет дольше а сайт летает. Спасибо за советы. Кстати при редактировании новостей у меня почему-то в скрипте очистка кеша идет вот так

clear_cache(...'full_'.$item_db[0]...) 


Но это неверно и кеш не станет так чиститься. Ведь создается кеш с другими входными данными и его идентификатором является не ID новости в системе, а SQL запрос вызова этой новости

По этой причине переписал немного и теперь при редактировании он правильно чистит свой старый кеш полной новости


Если кому нужно, я оставил только очистку "full_" так как tags и archives он трогать не должен.


На замену стандартной строки clear_cache(...) в /engine/inc/editnews.php
я установил следующие

 $id_cache_edited_news = "SELECT * FROM dle_post LEFT JOIN dle_post_extras ON (dle_post.id=dle_post_extras.news_id) WHERE  id = '".$item_db[0]."'";
	 clear_cache('full',$id_cache_edited_news);

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх