«
»
WEBWEB - PHP

Реализация кэширования страниц для повышения производительности сайта

Реализация кэширования страниц для повышения производительности сайта

Веб-кеш – это подход к временному хранению (кешированию) веб-документов, таких как HTML-страницы и изображения, для уменьшения использования полосы пропускания и нагрузки на сервер. Содержимое веб-страницы может временно храниться в файле, так что каждый раз, когда сервер получает запрос, он не должен обрабатывать его снова и снова. Это называется кэшированием страниц.

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

В этой статье мы рассмотрим простой подход к достижению кэширования страниц.

Связанная теория для кэширования страниц:

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

Однако после создания файла кэша мы всегда получим один и тот же вывод, даже если код на веб-странице будет изменен. Чтобы получить изменения в выводе, нам нужно сначала удалить файл кэша. Эта очистка кэша может быть выполнена вручную или с помощью cronjob на сервере.

По сути, нам нужны два файла для этого:

  • index.php (веб-страница, которая должна быть кэширована)
  • functions.php (функции, необходимые для кэширования)

functions.php

<?php function getCurrentURL(){ $isHTTPS = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on'); $port = (isset($_SERVER['SERVER_PORT']) && ((!$isHTTPS && $_SERVER['SERVER_PORT']!="80") || ($isHTTPS && $_SERVER['SERVER_PORT']!="443"))); $port = ($port)? ':'.$_SERVER['SERVER_PORT']: ''; $url = ($isHTTPS? 'https://': 'http://').$_SERVER['HTTP_HOST'].$port.$_SERVER['REQUEST_URI']; return $url; } function cleanURL($url){ $url = str_replace(' ','-',$url); $url = preg_replace('/[^A-Za-z0-9-]/','',$url); return trim(preg_replace('/-+/','-',!empty($url)? strtolower($url):""),"="); } function setPageCaching($content){ $url = "cache/".cleanURL(getCurrentURL()); file_put_contents($url,$content,LOCK_EX); return true; } function getPageCaching(){ $url = "cache/".cleanURL(getCurrentURL()); if(file_exists($url)){ return file_get_contents($url); } else{ return false; } } ?>

index.php

<?php include('functions.php'); $cached_html = getPageCaching(); //if page is cached, render the cached html if($cached_html){ echo $cached_html; die; } //if page is not cached ob_start(); ?> <html> <head> <title>Caching Example</title> </head> <body> <h2>Caching Example</h2> <p>This is an example for page caching to improve website performance.</p> Blah Blah Blah Blah Blah Blah Blah </body> </html>  <?php  $content = ob_get_contents(); setPageCaching($content); ?>

Источник записи: https://thedebuggers.com

Связанные записи
LinuxWEBWordPressПанели управления

Как уменьшить нагрузку на сервер и повысить скорость WordPress с помощью Memcached | Форум Plesk

WEBWordPress

Как добавить «Режим чтения» в ваши сообщения на блоге

WEBWordPress

6 важных тенденций SEO на 2020 год и последующий период (наши мысли)

WEB

Beaker Browser - Одноранговый браузер для веб-хакеров и разработчиков.