Я новичок в PHP и хочу попробовать кеширование (впервые), поэтому я делаю сайт, и на нем есть:
- динамическая домашняя страница
- динамическая страница портфолио
- динамическая страница контактов
- статика о странице
- статическая страница администратора
Поэтому я прочитал руководство по кешированию и пытаюсь создать свою собственную систему кеширования:
Используя файловый кеш на основе запрашиваемой страницы, при запросе страницы система кеширования проверяет, есть ли кеш в cache directory
, если еще нет файла кеша, а затем записывает весь вывод (html) из сценария php (в этот случай выводится из output buffer
), и если есть файл кеша, который соответствует определенному идентификатору (на основе URI), тогда просто include_once()
файл html.
Затем я прочитал в CodeIgniter (я делаю этот веб-сайт с помощью CI) говорит, что есть APC для кеширования, затем я снова прочитал об APC, то, что я прочитал об APC, это то, что он кэширует результаты БД, но теперь я не понимаю, что мне использовать.
Что я получил до сих пор:
- кеширование файлов, вероятно, будет медленнее, если будет много запросов (я не знаю, правда это или нет, но я читал его где-то в поисковой системе)
- APC быстрый
Но я все еще не понимаю, что мне следует использовать, я использую общий хостинг
1 ответ
Уровни кеширования, наиболее актуальные в приложении PHP:
Кэширование файлов / скриптов . Операционная система фактически делает это в значительной степени. Когда файл открывается, он добавляется в кеш уровня ОС. Он остается там до тех пор, пока не будет затронут файл или ОС не потребуется освободить память для других процессов. Собственное PHP-решение не является хорошей заменой этому.
Кэширование кодов операций . Для работы PHP необходимо проанализировать и скомпилировать скрипт в коды операций. Такой механизм, как APC, будет кэшировать коды операций каждого сценария PHP, выполняемого Apache, при условии, что кеш не переполняется. Собственное PHP-решение, построенное на основе APC, может частично сделать это, но APC уже делает это ... так что не беспокойтесь.
Кэширование запросов . Если ваш сценарий обращается к большому количеству данных, которые не меняются очень часто или в которых допустима некоторая задержка между обновлениями и видимостью этих обновлений, кэширование результатов из сложного < / em> запросы полезны. Собственное PHP-решение, построенное на APC, приемлемо и выгодно на этом уровне. Но решение на уровне базы данных здесь также уместно, и часто более уместно .
Кэширование вывода . Если ваша страница в значительной степени детерминирована и / или допустима задержка, применимая к кешированию запросов , вы можете кэшировать весь вывод скрипта с помощью буферизации вывода. и APC. Домашнее PHP-решение, построенное на APC, здесь приемлемо, но, как правило, не обязательно. Если страница статическая, вы, вероятно, не экономите на повторных вычислениях. А если он динамический, обычно все равно предпочтительнее просто повторно отрисовать страницу.
В выделенной или виртуальной среде вам потребуется установить APC (или что-то подобное) самостоятельно. Но в среде общего хостинга очень вероятно, что APC установлен. А если бы его не было, вы все равно не смогли бы установить его самостоятельно.
И из-за моей собственной неуверенности я бы рекомендовал не выполнять какие-либо запросы или кэширование вывода с помощью APC в общей среде - я не уверен, разделяет ли APC кеши по виртуальным хостам. Даже если это так, я бы не стал предполагать, что мой сайт действительно является отдельным виртуальным хостом.
Похожие вопросы
Новые вопросы
php
PHP — это широко используемый язык сценариев общего назначения с открытым исходным кодом, мультипарадигмальный, динамически типизированный и интерпретируемый, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.
APC
:( так что, возможно, я думаю вернуться к простому кэшированию файлов, которое я сделал (в котором хранятся выходные данные (html ) изoutput buffer
) что вы думаете об этом? Следует ли мне его кэшировать? потому что страница портфолио получит много изображенийURI
из БД и отобразит их в<img src="" />