12.07.2015 Views

Реактивные веб-сайты Николай Мациевский Евгений ...

Реактивные веб-сайты Николай Мациевский Евгений ...

Реактивные веб-сайты Николай Мациевский Евгений ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

152РЕАКТИВНЫЕ ВЕБ-САЙТЫПеременная $cache_me может формироваться на основе множествапараметров (в том числе части URL, которые нужно или не нужно кэшировать,пользовательские агенты и роботы, для которых можно отдавать кэшированныеверсии страниц, и т. д.). Стоит также отметить, что просто создатьфайл с именем, равным текущему URL страницы, невозможно: в немвстречаются недопустимые символы (/, ?), которые нужно трансформироватьпри сохранении на файловой системе.Создаем закэшированный документНо мы рассмотрели процесс выдачи закэшированного документа, акаким образом он появляется на жестком диске? Процедура сохраненияфайла немного проще и может быть записана следующим образом (код изWeb Optimizer):/* определяем, нужно ли нам сохранять закэшированную версиюдокумента */if (!empty($this->cache_me)) {/* формируем имя файла */$file = $options['cachedir'] . '/' . $this->uri;/* проверяем, есть ли такой файл и не устарел ли он */if (!is_file($file) ||$_SERVER['REQUEST_TIME'] - filemtime($file) >$options['cache_timeout']) {/* записываем новое содержимое в файл */$fp = @fopen($file, "a");if ($fp) {/* блокируем файл от конкурентных попыток записи */@flock($fp, LOCK_EX);/* удаляем содержимое и перемещаемся на начало файла */@ftruncate($fp, 0);@fseek($fp, 0);@fwrite($fp, $this->content);@fclose($fp);}}}Правильно настроенное кэширование на серверном уровне способносэкономить время ваших посетителей (и тем самым поднять конверсиюсайта) и сэкономить серверные ресурсы (при использовании каких-либораспределенных мощностей).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!