|
4 years ago | |
---|---|---|
README.md | 4 years ago | |
mcacher.class.php | 4 years ago |
Данный класс позволяет создать зеркало любого удаленного ресурса на локальном сервере. Созданное зеркало по сути является прокси сервером, который будет непосредственно взаимодействовать с удаленным хостом. Благодаря системе встроенного кэширования страниц и картинок, нет нужды многократно загружать одну и ту же страницу с сервера.
Данный скрипт распространяется по Универсальной общедоступной лицензии GNU General Public License (GNU/GPL).
Авторы не несут ответственность за любой ущерб, причиненный любой стороне в результате использования этого скрипта.
Создайте и разместите в корневом каталоге файл ".htaccess" со следующим содержанием:
DirectoryIndex cacher.php
ErrorDocument 404 /cacher.php
Options FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)$ cacher.php
Откройте в браузере ваш хост для просмотра результата работы данного класса.
- cache_dir -- Директория хранения файлов кэша
- cache_time -- Период хранения кэша в часах (0 -- не кэшировать)
- custom_cache -- Выборочное кэширование
- forbidden -- Ограничение доступа к определенным ресурсам
- post_no_cache -- Не кэшировать POST-запросы
- ignore_sid -- Игнорировать SESSION ID в путях (URI)
- forwarded -- Отправлять заголовок X-Forwarded-For
- replace_ref -- Заменить хост в отправляемых заголовках HTTP_REFERER
- connect -- Адрес подключения
- proxy_connect -- Адрес подключения через HTTP-прокси
- proxy_user -- Пользователь прокси-сервера
- proxy_pass -- Пароль прокси-сервера
- path -- Рабочий путь класса
- head_replace -- Автозамена фрагментов текста в заголовках
- head_cut -- Автоудаление фрагментов текста из теле заголовков
- body_replace -- Автозамена фрагментов текста в теле страницы
- body_cut -- Автоудаление фрагментов текста из теле страницы
<?php
include 'mcacher.class.php'; // Подключение класса
$mcp = new Cacher; // Определение класса
$mcp->cache_dir = 'cache'; // Директория хранения файлов кэша
$mcp->cache_time = 24; // Период хранения кэша в часах (0 -- не кэшировать)
// Пути, для которых следует применить индивидуальный период хранения кэша
$mcp->custom_cache = array
(
"^/news" => 0, // Не кэшировать страницу /news
".dhtml$" => 4 // Обновлять кэш для файлов .dhtml раз в 4 часа
);
// Ограничение доступа к различным ресурсам, страницам или файлам
$mcp->forbidden = array
(
"^/badpage.php", // Закрыть доступ к странице /badpage.php
".mp3$" // Закрыть доступ ко всем файлам .mp3
);
$mcp->connect = 'http://www.hsdn.org'; // Адрес подключения
// Автозамена реального имени сайта на имя сайта зеркала в заголовках HTTP
$mcp->head_replace = array
(
'www.hsdn.org' => $_SERVER['SERVER_NAME'] // Для заголовков, пр. Location
);
// Автозамена реального имени сайта на имя сайта зеркала в теле страницы, а также в ссылках на страницах
$mcp->body_replace = array
(
'http://www.hsdn.org' => '' // Заменяем ссылки вида:
// href="http://www.hsdn.org/link" на href="/link"
);
$mcp->run_cache(); // Запуск класса
?>
<?php
include 'mcacher.class.php'; // Подключение класса
$mcp = new Cacher; // Определение класса
$path = $mcp->uri_array(); // Получение аргументов URI
// Выбор сайта по первому аргументу URI
switch($path[1])
{
// Первый сайт (доступен как: http://my-cache.ru/www.hsdn.org/)
case 'www.hsdn.org':
$mcp->cache_dir = 'cache/www.hsdn.org'; // Директория хранения файлов кэша
$mcp->cache_time = 24; // Период хранения кэша в часах (0 -- не кэшировать)
$mcp->connect = 'http://www.hsdn.org'; // Адрес подключения
$mcp->path = '/www.hsdn.org'; // Рабочий путь класса
// Возможно, придется заменить некоторые ссылки
$mcp->body_replace = array
(
'="/' => '="'.$mcp->path.'/', // Заменяем ссылки вида:
// href="/link" на href="/www.hsdn.org/link"
);
// ... ниже можно определить остальные переменные, как в первом примере
break;
// Второй сайт (доступен как: http://my-cache.ru/www.ya.ru/)
case 'www.ya.ru':
$mcp->cache_dir = 'cache/www.ya.ru'; // Директория хранения файлов кэша
$mcp->cache_time = 0; // Период хранения кэша в часах (0 -- не кэшировать)
$mcp->connect = 'http://www.ya.ru'; // Адрес подключения
$mcp->path = '/www.ya.ru'; // Рабочий путь класса
// Возможно, придется заменить некоторые ссылки
$mcp->body_replace = array
(
'="/' => '="'.$mcp->path.'/', // Заменяем ссылки вида:
// href="/link" на href="/www.ya.ru/link"
);
// ... ниже можно определить остальные переменные, как в первом примере
break;
// Сайт по-умолчанию (доступен как: http://my-cache.ru/)
default:
$mcp->cache_dir = 'cache'; // Директория хранения файлов кэша
$mcp->cache_time = 0; // Период хранения кэша в часах (0 -- не кэшировать)
$mcp->connect = 'http://www.mail.ru'; // Адрес подключения
// ... ниже можно определить остальные переменные, как в первом примере
break;
}
$mcp->run_cache(); // Запуск класса
?>