2009-12-14 2 views
2

В настоящее время я работаю над проектом php/mysql с системой AbleDating, мой клиент беспокоится о загрузке сервера, поэтому он попросил меня использовать «кеширование» столько, сколько я мог, он попросил меня кэшировать mysql запрос и некоторые html-зоны ...Кэширование Php и mysql

Возможно ли кэшировать только некоторые html-зоны с помощью php? Если да, то как я могу это сделать?

Для кэширования mysql это просто возможность проверить или изменить что-то в кодировке?

Спасибо!

ответ

1

Кэш-память MySql в основном просто кэширует результирующие базы данных по SQL, выданные в базу данных: если SQL-запрос/запрос находится в кеше, то результат возвращается без какой-либо работы, выполняемой механизмом базы данных. Таким образом, существует определенная часть накладных расходов на поддержание точности (т. Е. БД должна отслеживать изменения и затыкать записи кэша соответственно).

Сравните это с другими БД, такими как Oracle, где механизм кэширования может принимать во внимание помещающие элементы (связанные переменные) и опускает «жесткий» синтаксический анализ (т. Е. Проверяет правильность SQL и т. Д.), Если найден план SQL в общем кэше SQL.

Если вы обнаружите, что повторно отправили то же самое SQL в базу данных, то кеширование может существенно повлиять. Если это не так, вы даже можете обнаружить, что дополнительные накладные расходы отменяет любую выгоду. Но вы не будете знать наверняка, пока у вас не будет определенных показателей из вашей системы (т. Е. Профилирования вашего SQL, анализа журналов запросов и т. Д.)

1

memcached является отличным способом для кэширования ничего (PHP, MySQL, результаты любой другой) в памяти. Пара это с простым в использовании библиотеки кэширования, как Zend_Cache и это делает кэширование подпруги:

$frontendOptions = array(
    'lifetime' => 60, // Seconds to cache 
    'automatic_serialization' => true 
); 

$cache = Zend_Cache::factory('Core', 
          'Memcached', 
          $frontendOptions); 

if (!$my_nasty_large_result = $cache->load('my_nasty_large_result')) { 
    $nasty_big_long_query = $db->query('SELECT * FROM huge_table'); 
    $nasty_big_long_result = array(); 
    foreach ($nasty_big_long_result as $result) 
     $nasty_big_long_result[] = $result; 

    $cache->save($nasty_big_long_result, 'my_nasty_large_resultt'); 
} 
+0

Zend_Cache отлично подходит для кэширования - я использую его для кэширования файлов на основе даже и это огромный прирост производительности. – jeffff

Смежные вопросы