1 (2013-09-22 00:10:21 отредактировано Cupuyc1989)

Тема: Кэширование страниц

Доброго времени суток коллеги.

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

Специально для вас я подготовил подробную инструкцию для включения этой функции.

1) Нужно создать в корне сайта папку cache_files и дать ей права на полное изменение (0777)

2) Создаём 2 файла, которые будут отвечать за логику кэширования.

+ открыть спойлер

Файл start_cache.php с содержанием:

<?php
// раздел настроек, которые вы можете менять
$settings_cachedir = $_SERVER["DOCUMENT_ROOT"].'/cache_files/';
$settings_cachetime = 3600; //время жизни кэша (1 час)

// код
$thispage = 'http://' .
    $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$cachelink = $settings_cachedir.md5($thispage).".html";
if (file_exists($cachelink)) {
    $cachelink_time = filemtime($cachelink);

    if ((time() - $settings_cachetime) < $cachelink_time) {
        readfile($cachelink);die();
    }
}

ob_start();
?>

Файл end_cache.php с содержанием:

<?php
$fp = fopen($cachelink, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();
?>

1 файл проверяет, есть ли файл кэша, если он есть - загружаем его, если его нет - создаём. Так-же в нём регулируется время жизни файла кэша.
2 файл завершает процесс создания файла кэша

3) Подключаем эти файлы в шаблон нашего сайта

+ открыть спойлер

Первой строкой вставляем

<?php include($_SERVER["DOCUMENT_ROOT"].'*путь к файлу*/start_cache.php'); ?>

Последней строкой

<?php include($_SERVER["DOCUMENT_ROOT"].'*путь к файлу*/end_cache.php'); ?>

Вставлять файлы необходимо ОБЯЗАТЕЛЬНО в первую и последнюю строку, чтобы в кэш попадала вся страница, в противном случае - будет нарушена структура сайта

4) Тестируем проект и выявляем оптимальное время кэша. (Например в моём случае это 3 часа)

Вот и всё. Надеюсь данная статья окажется для вас полезной и вам не придётся мучаться как мне в поисках этого решения и адаптацией его к GetSimple smile

P.S. Для обновления кеша - просто очистите папку cache_files.

"Давайте проще" smile

Поделиться

2

Re: Кэширование страниц

спасибо, возможно пригодится, на оригинальном сайте был где-то плагин для кэширования simplecache.php, но я его не тестировал пока

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

3

Re: Кэширование страниц

Я тестировал. Он устарел и уже не актуален - поэтому пришлось прибегнуть к этим "танцам с бубном" smile

"Давайте проще" smile

Поделиться

4

Re: Кэширование страниц

может быть плагин изготовишь?

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

5

Re: Кэширование страниц

olsv64 пишет:

может быть плагин изготовишь?

Мне сейчас предстоит сделать типовое решение под битрикс. Все свои силы пущу в это русло. Как только осилю - можно будет подумать, поковырять чужие плагины и сварганить. Сейчас просто итак мозг пухнет >.< Плюс я уже сколько времени не могу себя заставить видео-курс доснять. Мне уже даже стыдно... Эх, было бы меня двое smile

"Давайте проще" smile

Поделиться

6

Re: Кэширование страниц

да не надо стыдится, конечно на первом месте всегда должен стоять поиск пропитания, а уж бесплатное от широты души smile

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

7

Re: Кэширование страниц

простая и эфективная система кеширования

Поделиться

8

Re: Кэширование страниц

Так, а если у меня структура шаблона в нескольких файлах:

header.inc.php
  - template.php
      - menu.inc.php
  - news.php
      - menu.inc.php
footer.inc.php

То куда вставлять? Start_cache.php в начало хидера и end_cache.php в конец футера?

Поделиться

9

Re: Кэширование страниц

да, только внимательнее с  этой строкой

$cachelink = $settings_cachedir.md5($thispage).".html";

если у вас нет расширения html

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

10

Re: Кэширование страниц

olsv64 пишет:

да, только внимательнее с  этой строкой

$cachelink = $settings_cachedir.md5($thispage).".html";

если у вас нет расширения html

Здравствуйте,

Сегодня данный способ кеширования все еще актуален? "Заводских" вариантов не появилось?

И вот насчет этой строки. У меня на сайте расширения страниц .htm.

Поделиться

11

Re: Кэширование страниц

замените .html на .htm

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

12

Re: Кэширование страниц

http://get-simple.info/extend/plugin/ca … gation/39/
http://get-simple.info/extend/plugin/simplecache/56/

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

13

Re: Кэширование страниц

Все круто. Одна проблема: при этом способе (из стартпоста) перестает работать плагин FAQ на странице site.ru/faq
Что делать, спасайте! )

Поделиться