Главная » DARYA DLE » Плагины DLE » Полный статический кеш для DLE
29 0  

Полный статический кеш для DLE

Название: Файловыq кеш DLE
Версия: 1.0
Дата выпуска: 28.09.2020 года
Версия DLE: 13 <
Автор: rullan

В ходе сравнения DLE и Wordpress выяснилось, что наш любимый ДЛЕ не делает полный статический кеш - это как бы и правильно для новостных движков. Но что если на длешке сделан сайт каталог или визитка и правки туда вносятся максимум 1 раз на месяц.

А мне нужно было сделать полную статику, поэтому поискав во всемогущем Интернете нашел способ сделать полное файловое кеширование для DLE. Даный способ подходит для всех версий ДЛЕ включая и 14.1.


tongue ПОГНАЛИ:

1. В папке /engine/cache/ создаем папку fcache и ставим на нее права 777, + сюда бросаем файлик .htaccess с папки /engine/cache/system

2. Вручную, через плагины не получится, в корневом файле:

Открываем файл index.php
Находим:

define ( 'DATALIFEENGINE', true );

и выше вставляем:

////Файловое кеширование///////
if( $_SESSION['dle_user_id'] == false && $_SERVER['REQUEST_METHOD'] == "GET" )
{
    $fcache = $_SERVER['DOCUMENT_ROOT'] . '/engine/cache/fcache/' . md5( $_SERVER['REQUEST_URI'] ) . '.html';
	if ( file_exists( $fcache ) && filemtime( $fcache ) > time() - 3600*3 ) exit( file_get_contents( $fcache ) );
}
////

*3600*3 - означает что время жизни кеша 3 часа. По истечении которого кеш будет перезаписан.



2. В файле - engine/modules/main.php  (Можно уже через плагин - прикрепил ниже)

Находим:

GzipOut();

Вставляем выше:

if( $_SESSION['dle_user_id'] == false && $_SERVER['REQUEST_METHOD'] == "GET" )
file_put_contents( $fcache, ob_get_contents() );


ГОТОВО!


Теперь у вас в папке /engine/cache/fcache/ будет накапливаться кеш при каждом посещени сайта незарегестрированным юзером, а вот дл тех хто авторизируется будет обычный кеш ДЛЕ!


belay am И ПОМНИТЕ!  после каждой правки на сайте нужно будет вручную оудалять файлы с папки /engine/cache/fcache/



Также можно сделать автоматическую очистку.

Но, для того чтобы кеш редкооткрываемых страниц не копился и не забивал вам диск, создаем следующий скрипт в корне сайта и ставим в кроне на выполнение его каждые 12 часов например.
Например файл clear.php


<?php
$cache_time = 3600*3+60; // время жизни кеша + 60 секунд.
$dir = "/var/www/username/data/www/site.ru/engine/cache/fcache/"; // абсолютный путь до папки с кешем
echo "site.ru: "; // домен вашего сайта
//==========================Очистка устаревшего файлового кэша============//
$del = 0;
$fdir = opendir( $dir );
while( ( $file = readdir( $fdir ) ) !== false )
{
    $filetype = explode( '.', $file );
    $type = array_pop( $filetype );
    $fcache = $dir . $file;
    if ( $type == 'html' AND file_exists( $fcache ) AND filemtime( $fcache ) < time() - $cache_time )
    {
        $del++;
        unlink( $fcache );
    }
}
closedir( $fdir );
echo $del . " files deleted \n\r";
//========================================================================//
?>

Оставить свой комментарий:

Опыт в веб разработке:

2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
1979
2020