2013-03-05 2 views
-2
<?php 
define('CACHE_PATH', $_SERVER["DOCUMENT_ROOT"]."/cachefiles/"); 
// how long to keep the cache files (hours) 
define('CACHE_TIME', 12); 
// return location and name for cache file 
function cache_file() 
{ 
    return CACHE_PATH . md5($_SERVER['REQUEST_URI']); 
} 

// display cached file if present and not expired 
function cache_display() 
{ 
    $file = cache_file(); 
    // check that cache file exists and is not too old 
    if(!file_exists($file)) return; 
    if(filemtime($file) < time() - CACHE_TIME * 3600) return; 
    // if so, display cache file and stop processing 
    readfile($file); 
    exit; 
} 

// write to cache file 
function cache_page($content) 
{ 
    if(false !== ($f = @fopen(cache_file(), 'w'))) { 
     fwrite($f, $content); 
     fclose($f); 
    } 
    return $content; 
} 

// execution stops here if valid cache file found 
cache_display(); 

// enable output buffering and create cache file 
ob_start('cache_page'); 
?> 

Этот код выше создает кэш с произвольным именемХранится Cache Имя файла Изменение

например

4c556ca729a88177e72946a4c3732f62

a87aef8e1d11cee944a8854ab8377ac6

85f2e557d6b483fc06db804d35e6580f

Как это может сделать его хранит кэш страниц с фактическим именем страницы, как

домашнего 4c556ca729a88177e72946a4c3732f62

о-a87aef8e1d11cee944a8854ab8377ac6

меня-85f2e557d6b483fc06db804d35e6580f

+2

[Что вы пробовали] (http://whathaveyoutried.com)? Все, что вам нужно сделать, это изменить 'cache_file()' – UnholyRanger

+0

Вы знаете, как работает этот код? из любопытства .. – UnholyRanger

+0

Я построю описание, это один раз, я предлагаю в то же время прочитать ссылку в своем первом комментарии и ответы на часто задаваемые вопросы по правильным вопросам (дополнительная информация, такая как тип ссылок поможет) – UnholyRanger

ответ

1

вопрос Ор является найден в методе cache_file(). Этот метод обрабатывает создание имени кэшированного файла при поиске или создании нового.

$_SERVER['REQUEST_URI'] 

Вернется всю страницу и переменные (напр. /index.php?var=1).

В cache_file() он строит имя, принимая хэш запроса MD5 и создавая полный путь к новому файлу.

CACHE_PATH . md5($_SERVER['REQUEST_URI']); 

Запрос OP состоял в том, чтобы изменить запрос, чтобы показать home/about/me в кешированном имени файла. Это можно сделать, проанализировав URI для имени или просто используя имя файла. В качестве примера я не буду использовать rewire http://domain.tld/index.php.

basename(__FILE__, ".php"); //gives index on index.php 

Используя это, а затем изменить

CACHE_PATH .basename(__FILE__, ".php") . "-" . md5($_SERVER['REQUEST_URI']); 

Следующие даст

../path/to/cache/index-{md5hash} 
Смежные вопросы