[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кэшироание сервером
olgatcpip
Здравствуйте.

Хочется сделать такую штуку на сервере. Записать в нем url-шаблоны, которые нужно кэшировать и даже php не выполнять. а сразу выдавать html страницу.

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

Интересно, можно ли такое сделать? Мне кажется можно.......

Подскажите пожалуйста, где смотреть, ссылочку для чайников.



Спустя 2 часа, 32 минуты, 40 секунд (9.12.2011 - 10:55) McLotos написал(а):
olgatcpip
Может что-то такое тебя устроит
В домашней директории создаем файлы .htaccess, start_cache.php, end_cache.php, а также папку с названием cache_files.
Папке cache_files необходимо проставить атрибуты 777.
Внутри .htaccess файла пропиcать следующие строки:
php_value auto_prepend_file /home/username/public_html/start_cache.php
php_value auto_append_file /home/username/public_html/end_cache.php

В скрипт start_cache.php помещаем следующий код:
<?php
// раздел настроек
$settings_cachedir = '/home/username/public_html/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();


а ещё можешь почитать вот это

Спустя 15 минут, 34 секунды (9.12.2011 - 11:11) killer8080 написал(а):
McLotos
Наверно вместо end_cache.php, лучше было бы использовать ob_start('callback');
И ещё сборщик мусора нужен.

Спустя 3 часа, 45 минут, 17 секунд (9.12.2011 - 14:56) Nikitian написал(а):
Шаблон забейте в конфиг nginx, как будто это статика. nginx, в большинстве настроек сделан так, что если статику не находит, то пинает apache. Соответственно, апачем генерите эту статику и больше он его по этому адресу пинать не будет.
Конфиг локейшна у nginx для такого поведения должен выглядеть так:

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {;Это и есть шаблоны, правда в данном примере имеется ввиду шаблон окончания адреса - разберётесь как поправить )
root /var/www/;
error_page 404 = @fallback;
}
location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}

Спустя 3 часа, 4 минуты, 32 секунды (9.12.2011 - 18:01) olgatcpip написал(а):
McLotos
Этот вариант ага, но он как план "Б"

Nikitian
Вот здесь поподробнее, куда записать?
И как прописать, чтобы не навсегда запоминал.... страницы то многие динамические, хотя будут и статические

Спустя 6 минут, 2 секунды (9.12.2011 - 18:07) Nikitian написал(а):
Чтоб не навсегда, удаляйте, когда протухнет кэш.
Это была частичка конфига nginx. Причём стандартного конфига :) Я таким образом превьюшки картинок делаю. В папке с картинками лежит
.htaccess
<IfModule mod_rewrite.c>
directoryindex /index.php
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /imageresize.php?q=$1
</IfModule>

Когда картинки нет, nginx передаёт работу апачу. Он видит этот ,htaccess и видит куда дальше передать работу. Скрипт отрабатывает и создаёт картинку (или не создаёт, если не надо :)) Далее nginx уже находит картинку и не трогает апач.
То же самое можно делать и со страницами. Удаляйте их, когда кэш становится неактуальным и они будут создаваться вновь.

Спустя 9 минут, 52 секунды (9.12.2011 - 18:17) olgatcpip написал(а):
Nikitian
Ваше первое сообщение э то тоже запись в .htaccess (извините, у меня мало грамоты как это называется) - это и есть nginx

Покажите, что у яндекса или гугла спросить, чтобы понять запись rolleyes.gif

У меня так то есть запись про rewrite
Цитата
RewriteEngine On
#--
RewriteCond $1 !^(robots\.txt|index\.php|server_time\.php|js|images|img|css|fckeditor|ckeditor|_adm|_files|_attach|cron|test.php|public|captcha|photos| loginza_.+\.html|sitemap\.xml|yandex_.+\.html|yandex_.+\.txt|favicon\.ico)


RewriteRule ^(.*) index.php


Спустя 12 минут, 59 секунд (9.12.2011 - 18:30) Nikitian написал(а):
В первом конфиг nginx. Он заставляет nginx пытаться отдать файлы по маске как статику, но если файла нет, то передать управление на бэкенд (апач).
Второе - это .htaccess для сообщения апачу, что если ему приходит запрос на несуществующий файл в некоторой директории, то не стоит поднимать панику отдавать 404 ошибку, а следует передать управление указанному скрипту (в примере /imageresize.php которому в get-параметре q передаётся строка запроса).

Спустя 45 минут, 41 секунда (9.12.2011 - 19:15) killer8080 написал(а):
olgatcpip
а какой хостинг? Если виртуальный (shared), то доступа к конфигам nginx-а не будет. Разве что, договорится с админами.

Спустя 39 минут, 38 секунд (9.12.2011 - 19:55) olgatcpip написал(а):
killer8080
Вот в тему вопрос, ибо nginx у меня начал ассоциироваться с .htaccess

Виртуальный выделенный сервер со всеми возможностями физического сервера
http://sibhoster.ru/hosting/vps


_____________
Ласковое слово и кошке приятно... Плюсик в карму сойдет wink.gif
*smarty дока - новая любовь
Моё рукотворение ругайте, хвалите smile.gif
Веду маленький блог
в этом блоге публикую новые работы
WMR217126627282 wink.gif

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.