Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!
Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!
Обычно в вебе, один и то же контент отображается снова и снова. Кэширование позволяет увеличить скорость генерации, сохраняя уже сгенерированную страницу в файл. Есть разные способы сделать это, но мы рассмотрим только один из методов.
При использовании функции кэширования вам наверняка будет интересно узнать насколько ускорился ваш скрипт. Для этого мы будем использовать класс joomla JProfiler.
Если капнуть немного по глубже, то при включенной отладке (основных настройках сайта), создается глобальная переменная $_PROFILER.
Поэтому как вариант можно использовать несколько другой способ инициализации профайлера:
Мы сделаем небольшой компонент, который фактически ничего не делает, но на его примере, мы покажем как рассчитать время, необходимое для выполнения функции.
Во-первых нужно создать файл компонента:
/components/com_testcache/testcache.phpВ файле создадим класс с одним методом:
250 запросов подобного характера - это очень много. Но так мы заметим разницу в производительности с кэшированием и без него.
Для начала включите кэширование в глобальных настройках cms joomla.
Теперь создадим ссылку на класс кэширования через JFactory
Если вы хотите, чтобы компонент использовал кэширование, даже если оно отключено в глобальной конфигурации, можно использовать следующий прием:
Далее вызовим наш метод через объект кэширования:
Если мы хотим вызвать кэширование конкретной функции, то не нужно использовать массив:
Во время тестирования кода, мы можем использовать следующий метод для очистки кэша:
Этот метод удалит все файлы из папки /cache. Будте осторожны с использованием этой функции для высоконагруженных проектов - это может серьезно замедлить работу Joomla.
Чтобы сравнить производительность, вызываем наш метод дважды. Один раз через объект кэша, и один раз без него:
Теперь запускаем наш компонент через index.php?option=com_testcache. Первые результаты будут такими:
2.093 без кэша
2.160 с кэшем
Результат с кэшированием получился больше, потому что некоторое время ушло на запись кэша в файл. Теперь перезагрузим страницу в браузере.
2.073 без кэша
0.008 с кэшем
Неплохой выйгрыш, не правда ли?
Наш пример использует очень медленные запросы к базе данных 250 раз. Мы видим огромное увеличение в скорости. Тем не менее, использование кэш-памяти не всегда ускоряет процесс. Попробуйте значительно уменьшить число запросов и посмотрите сами. Для этого мы и использовали JProfiler, чтобы увидеть результаты ускорения.
И, конечно помните, что кэширование не является заменой для эффективного программирования.
Спасибо, кеш-это вообще полезная штука! а то у меня постоянные перегрузы(будем пытаться оптимизировать сайт!
"Если кОпнуть немного по глубже".
Для начала включите кэширование в глобальных настройках cms joomla.
Теперь создадим ссылку на класс кэширования через JFactory
$cache = & JFactory::getCache();
Где именно создавать ссылку?
или где вызывать этот метов
$rows = $cache->call( array( 'TestClass', 'testMethod' ) );
Стандартного включения функции кеширования недостаточно?
$profiler = new JProfiler();
$rows = $cache->call( array( 'TestClass', 'testMethod' ) );
Здесь обычный метод "testMethod" вызывается в контексте класса "TestClass" (как статический) - это не очень хорошо, но это косяк реализации JCache::call в новых версиях PHP - это уже будет не соответствие стандартам.
Молодцы! Грамотно расписано использование кэширования.
Спасибо за идеи!
My brother recommended I may like this blog.
He was once entirely right. This submit truly made
my day. You cann't consider just how a lot time I had spent for this info!
Thanks!
Hi my friend! I wish to say that this article is amazing, nice
written and come with almost all important infos. I'd like
to peer extra posts like this .
Does your site have a contact page? I'm having trouble locating it but,
I'd like to shoot you an e-mail. I've got some creative ideas for your blog you might be interested in hearing.
Either way, great website and I look forward to seeing it
improve over time.
You ought to take part in a contest for one of the greatest sites on the net.
I will highly recommend this site!
У меня при включенном кэшировании возникают ошибки.