Кэширование контента, памяти и файловой системы (PHP и Apache) - PullRequest
1 голос
/ 29 июля 2011

Я немного новичок в программировании и у меня много вопросов о кешировании данных.Скажем, у нас есть кусок статического контента.Что будет быстрее: сохранить содержимое в файл php \ html и вывести страницу как есть, или использовать скрипт, который будет выводить содержимое через apc_fetch () (если он был ранее сохранен в памяти)?В первом случае Apache всегда читает страницу из файловой системы и никогда не хранит страницы в оперативной памяти, не так ли?Работает ли текущая реализация APC с FastCGI?Заранее спасибо!

Я до сих пор не понимаю, почему тесты показывают четырехкратное ускорение при использовании кэширования APC по сравнению с файловой системой, в то время как Apache может загружать статические страницы так быстро.

Ответы [ 3 ]

1 голос
/ 29 июля 2011

Вместо того чтобы статически кэшировать всю страницу, я бы кэшировал части, которые являются динамическими на этой странице (вызовы базы данных и т. Д.), А затем использовал файловую систему или memcache для хранения этих результатов кэширования.

Написание статических страниц будет труднее поддерживать по мере роста сайта, и это будет более затратным, если ваши страницы будут перестраиваться чаще.

0 голосов
/ 29 июля 2011

Если бы вашему веб-серверу приходилось извлекать каждый элемент контента с диска, это было бы невероятно медленно.Все современные операционные системы реализуют сложное кэширование на диске.

сохраните содержимое в файле php \ html и выведите страницу как есть, или используйте сценарий, который будет выводить содержимое с помощью apc_fetch ()

Доступ к статическому файлу (т.е. не к файлу PHP) будет намного, намного быстрее, чем доступ к файлу PHP, синтаксический анализ PHP и выполнение PHP для вызова apc_fetch ().Что касается того, будет ли быстрее генерировать html-страницу из PHP или использовать PHP для извлечения сгенерированных результатов из APC, ответ будет зависеть от того, сколько усилий PHP приложит

Я ожидаю ....

<?php
 print "hello world";
?>

Будет быстрее, чем

<?php
 print apc_fetch('hello');
?>
0 голосов
/ 29 июля 2011

Статический HTML всегда будет самым быстрым. Даже с кэшированием кода операции PHP все равно придется загружать и запускать сценарий, переходить в кэш и т. Д. Основная задача Apache, с другой стороны, состоит в том, чтобы обслуживать статический контент как можно быстрее и оптимизирована для этого.

...