Є такий PHP Framework CodeIgniter. Особисто мені він дуже подобається – простий, швидкий, дуже гарна документація (в т.ч. на російській мові). Робив я декілька проектів на ньому і не використовував кеш фреймворка. А в одному проекті кеш був обов’язковим. І тут я стикнувся з двома неприємними особливостями реалізації кеша у цьому фреймворку -
1) щоб очистити кеш для сторінки треба руками очищувати файл
2) файл має вигляд md5($url)
Це є досить незручно, відкриваємо файл system/libraries/Output.php (або створюємо новий файл system/application/libraries/Output.php)
і вносимо такі правки
1. В класі CI_Output створюємо метод _transform_path
$uri = str_replace("http://", "", $uri);
$pattern_delete = ‘#[^a-zA-Z0-9]#’;
$uri = preg_replace($pattern_delete, "-", $uri);
$uri .= "-";
return $uri;
}
2. В цьому ж класі створюємо метод clean_cache для очистки кеша (якщо викликати його з відповідного контролера без параметру – кеш для цього контролера буде вилучатись, якщо буде параметр – для того параметру).
global $CFG;
if (!$uri){
$CI =& get_instance();
$uri = $CI->config->item(‘base_url’).
$CI->config->item(‘index_page’).
$CI->uri->uri_string();
}
$cache_path = ($CFG->item(‘cache_path’) == ”) ? BASEPATH.‘cache/’ : $CFG->item(‘cache_path’);
$filepath = $cache_path . $this->_transform_path($uri) . md5($uri);
@unlink($filepath);
}
3. В методі _write_cache замінюємо рядок
на
Все, відтепер файли кешу будуть мати більш зручну назву
example.com-5ababd603b22780302dd8d83498e5172.php
замість
5ababd603b22780302dd8d83498e5172.php
01.10.2010 17:30
и конечно лучше использовать что-то вроде memcache и кэшировать данные в памяти, а не на жестком диске, поскольку так быстрее
01.10.2010 19:35
На рахунок цього не спорю, але для таких проектів, як цей, було достатньо файлового кеша.