logo img
Скрипт I-Soft Bizness

Бизнес в интернет. Виртуальные офисы фирм. Скрипт фирм и организаций.



Ответить
 Модуль "Быстрый сайт" (Умный Кэш)
construktor
1 декабря 2017 05:39
Сообщение #1


Профи
  • 68

Репутация: 86
Группа: Клиенты
Сообщений: 2477
Регистрация: 27.01.2010
Небольшая предыстория модуля. У клиента каталога была база фирм размером 2 гб. Страницы каталога грузились в среднем 12 с половиной минут. При этом на сервере было 7 ядер процессора и не мало оперативной памяти. Тесты показали, что процесс Mysql загружал только один процессор и оперативная память затрагивалась по минимуму. После подключения данного модуля скорость загруженных страниц сократилась до половины секунды.

Стоимость модуля 30$

Купить модуль по ссылке http://construktor.plati.ru/itm/modul-bystryj-sajt-umnyj-kehsh/2395302

Описание модуля “Быстрый сайт”

Модуль “Быстрый сайт” предназначен для ускорения работы сайта путем кэширования данных. Это существенно снижает нагрузку на сайт, и в первую очередь нагрузку на базу данных, за счет того, что данные сохраняются в файл. Дойдя до момента кэширования, выполнение скриптов прерываются, включая обращение к базе данных, и данные берутся из файла, что существенно уменьшает количество обрабатываемых процессов и снижает нагрузку на процессор и оперативную память.
Дальнейшие описанные возможности могут показаться достаточно сложными для непросвещенного пользователя. Тем не менее, все правила, исключения и инструкции уже прописаны для скрипта I-soft и его установка происходит в несколько шагов согласно инструкции. Кроме прочего, я всегда готов помощь в установке и настройке модуля вне зависимости от имеющихся у клиента знаний.

Для настройки модуля используются следующие возможности:

1) Добавление правил. Правила служат для возможности удалять закэшированные файлы в процессе добавления, изменения и удаления информации. Правила используют синтаксис функции Php glob. Об их использовании более подробно описано в инструкции модуля.
В дальнейшем для удаления закэшированных страниц достаточно вызвать метод $speed->update(“Директория с Кэшами”,array("Название правила указанное при добавлении")) в местах, где происходит изменение информации. Так как правил может быть несколько в зависимости от ситуации, поэтому можно передать любое количество правил в соответствующем массиве. Для скрипта I-soft предусмотрен ряд методов, в которых уже прописаны необходимые правила. Их достаточно подключить в соответствии с инструкцией.

2) Добавление исключений. Нужно понимать, что кэширование происходит по URLу. Поэтому, если один URL может предоставлять разную информацию в зависимости от передаваемых параметров или других инструкций, то такую страницу кэшировать не стоит. Исключения служат для того, чтобы исключить страницы, которые не надо кэшировать. Например, это может быть форма контактов, страница регистрации или авторизации пользователя, так как передавать один и тот же контент на этих страницах из-за передаваемых внутренних параметров неразумно.

3) Процесс кэширования информации. Модуль позволяет Кэшировать как всю страницу целиком, от корки до корки, так и отдельные ее части. Вы можете вызвать несколько методов в наиболее удобных для Вас местах.
Для этого вызовите метод if($speed->cachestart("speed/index/")) {exit;} вначале кэшируемой части и метод $speed->cachefinish(); в конце его выполнения.
В параметрах метода cachestart передается директория, в которой будет происходить сохранение файла в кэш, а данном случае указана директория "speed/index/".
После первичного выполнения скрипта страница закэшируется и сохранится в файл. При повторном выполнении скрипта данные уже не будут обрабатываться, а будут браться из файла. При этом в качестве параметра будет возвращено значение true.
Нужно понимать, что дальнейшее выполнение скрипта может оказаться невозможным. Поэтому функцию необходимо оборвать, либо можно воспользоваться методом goto или условием if для того, чтобы пропустить ненужное выполнение скрипта.

Рассмотрим несколько Вариантов использования:

1) Вариант с полным кэшированием страницы на примере скрипта I-soft.
Вызовем метод if($speed->cachestart("speed/index/")) {exit;} в наиболее удобном месте, чтобы минимизировать количество процессов, а именно в файле template/шаблон/header.php перед include ("./includes/common_header.php"); . Метод $speed->cachefinish(); вызовем в файле template/шаблон/footer.php перед include ("./includes/common_footer.php"); ?> . В данном варианте кэш будет взят из файла на корню и скрипт закончит выдавать нам страницу контента еще в самом начале. Недостаток этого метода заключается в том, что любая другая динамическая информация, такая как новые фирмы, товары и тд не изменятся до тех пор, пока файл кэша не будет удален или обновлен.

2) Вариант с кэшированием основной части страницы.
Вызовем метод if($speed->cachestart("speed/index/")) { include ( "./template/$def_template/footer.php" ); exit;} в конце файла /template/шаблон/header.php перед ?>. Метод $speed->cachefinish(); вызовем вначале файла /template/шаблон/footer.php после <? . В данном варианте будет кэшироваться только центральная часть. Как видим из примера, мы подключили еще и файл footer.php, перед тем, как прервать дальнейшую обработку скрипта. Без него вывод страницы бы получился не полный.

3) Вариант с кэшированием отдельных частей сайта, не требующих дальнейших подключений.
Для примера закэшируем сторонний модуль “Универсальное меню рубрикатор”. При большом количестве рубрик, наличии модуля Геолокации и “Расширения каталога товаров”, который подсчитывает на лету количество товаров и фирмы, что требует выполнение приличного количества операций, этот модуль может съедать достаточно большое количество излишних ресурсов. Чтобы снять с него нагрузку будем использовать Кэш. Но, так как выдаваемая до и после него информация должна формироваться динамически, мы не может оборвать дальнейшее выполнение скрипта функцией exit, но можем проскочить его с помощью метода goto, либо, как в данном случае, не подключать его вовсе, при наличии файла Кэша.
if(!$speed->cachestart("speed/rubric_dir/"))
include ("./rubrication.php");
$speed->cachefinish();
Кроме прочего можно сохранить данные в один файл if(!$speed->cachestart("speed/rubric_file")) , чтобы сэкономить место на диске. Для этого вместо директории в параметре метода cachestart необходимо указать путь к заранее созданному файлу, дав на него соответствующие права и атрибуты.
На страницах с категориями список меню автоматически раскрывается с подкатегориями этой страницы, а также выделяется категория. Поэтому этот способ не совсем подходит. Но если данный изъян для Вас не критичен, то можно поступить и так. Конечно, у нас еще останутся незакэшированные подзапросы на ajax, которые также можно обойти, если поменять post запросы на get. Но для понимания процесса работы класса этого будет достаточно. При сохранении в файл метод update достаточно заменить стандартной функцией записи данных в файл (например фунцией file_put_contents("speed/rubric_file",””), так как файл у нас один и нам он уже известен.

Модуль подходит как для скрипта I-soft Bizness, так и для любого другого скрипта.

--------------------
Конструктор сайтов для каталога. Загрузка фирм и товаров из Exel, Автооплата тарифного плана, Геолокация, Каталог товаров, Генератор сайтов, Автосборщик RSS-лент.Сделаю Все на javascript, PHP, HTML и СSS. construktor7@gmail.com
Перейти в начало страницы
Быстрый ответ Ответить
1чел. читают эту тему (гостей: 1)
Пользователей: 0