Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Ограничить кеширование на сайте

Ограничить кеширование на сайте


     19.11.2013    Общие вопросы по PHP    1465

вопрос
У меня в index.php прописана функция удаления множественных слешей
$path = $_SERVER['REQUEST_URI'];    
if (preg_match('#//+#', $path))
{
$path = preg_replace('#//+#', '/', $path);
header('Location: http://' . $_SERVER['HTTP_HOST'] . $path, true, 301);
}


Затем кеширование
$cache_file = $_SERVER['DOCUMENT_ROOT'].'/cache/'.md5( $_SERVER['REQUEST_URI'] ).'.tmp';
if ( file_exists( $cache_file ) && ( time( ) - filemtime( $cache_file ) ) < 9000 )
exit( include( $cache_file ) );
else
{
ob_start( );
include($file);
$fopendb = fopen( $cache_file, 'w+' );
flock( $fopendb, LOCK_EX );
fwrite( $fopendb, ob_get_contents( ) );
flock( $fopendb, LOCK_UN );
fclose( $fopendb );
ob_end_flush( );
}

Как запретить кеширование файлов со множественными слешами, а то получается,
site.ru/link.html
site.ru/////link.html
site.ru//////////////////link.html
одни и те же файлы многократно сохраняются в кэш по разным линкам, а уже затем редиректятся на нужную страницу. Папка кэша жиреет на глазах,..

Ответил: ПафНутиЙ


$cache_file = $_SERVER['DOCUMENT_ROOT'].'/cache/'.md5( $path ).'.tmp';

при условии что переменная $path до этого больше не переопределяется.
Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы