Помещение: Я не пытаюсь изобретать колесо, я просто пытаюсь понять.
Кэширование вывода может быть легко реализовано:
//GetFromMyCache returns the page if it finds the file otherwise returns FALSE if( ($page = GetFromMyCache($page_id)) !== FALSE ) { echo $page; //sending out page from cache exit(); } //since we reach this point in code, it means page was not in cache ob_start(); //let's start caching //we process the page getting data from DB //saving processed page in cache and flushing it out echo CachePageAndFlush(ob_get_contents());
хорошо объясняется в другой статье , а также в другом ответе .
Но затем приходит APC (который будет включен в PHP6 по умолчанию).
Является ли APC модулем, который когда-то был установлен на сервере, существующий PHP-код будет работать быстрее без изменений ?
Автоматически ли APC?
Тогда почему существуют функции, такие как apc_add
?
Как кэшировать целые страницы с помощью APC?
Когда APC установлен, нужно ли мне все же кэшировать с моей стороны?
Если APC собирается экономить деньги хостинг-провайдеров, почему они не устанавливают его? (Я имею в виду, что они должны участвовать в гонках, чтобы установить его, но я этого не вижу).
Устанавливает ли APC недостатки для этих хостинг-провайдеров?
APC – это кеш- код операции :
Альтернативный кэш PHP (APC) – это бесплатный и открытый кеш-код для PHP. Его цель – предоставить бесплатную, открытую и надежную структуру для кэширования и оптимизации промежуточного кода PHP.
Это не то же самое, что кеш шаблона (что вы демонстрируете), и это мало влияет на буферизацию вывода . Это не одно и то же.
Кэш-код Opcode означает кеширование кода PHP после его интерпретации . Это может быть любой фрагмент кода (не обязательно то, что выводит HTML). Например, вы можете использовать классы и сам механизм шаблонов в кеше операций операций. Это значительно ускорит ваш код, поскольку интерпретатору PHP не нужно снова «интерпретировать» ваш код, он может просто загрузить «интерпретированную» версию из кеша.
Пожалуйста, не путайте буферизацию вывода с кешем. Существует много уровней кэширования, например, два из наиболее распространенных, с которыми вам знакомы.
Очень простая версия – это куки-файл, в котором хранятся некоторые настройки. Вы выполняете только код, который «вычисляет» настройки один раз (когда пользователь входит в систему), а для остальной части сеанса вы используете «кэшированные» настройки из файла cookie.
Это делается, когда страница, которая должна быть создана один раз, но не меняется очень часто. Например, страница «ежедневные специальные предложения», которая является шаблоном. Вы генерируете его только один раз, а затем обслуживаете «визуализированную» страницу из кеша.
Ни один из них не использует APC
Является ли APC PHP быстрее работать самостоятельно?
Да. В некотором смысле. Преимущество сильно отличается.
При использовании APC мне все равно нужно кэшировать визуализированный HTML?
Bytecode НЕ является результатом HTML. Это та же программа, что и обычный PHP-скрипт. Даже при включенной APC PHP должен обрабатывать данные и отображать HTML.
Надеюсь, теперь вы понимаете разницу.
Кэш APC предоставляет как кеш-код, так и хранилище на основе памяти для хранения пользовательских данных.
Таким образом, вы также можете использовать его для хранения определенных пользовательских данных.
И также сохраняйте все отображаемые страницы (я не понимаю ваше замешательство здесь – что это за тип данных «page», о котором вы говорите? Не является ли результат ob просто регулярной строкой?).
Однако кэширование полученного HTML не так просто, как вы себе представляете.
Преждевременная оптимизация – это корень всего зла.
Начните оптимизацию своего сайта только тогда, когда у вас есть причина.
почему веб-хостеры ждут установки APC?
Существует несколько причин. Но одного достаточно – кеширование байт-кода не принесет никакой прибыли для обычного сайта электронной коммерции, основанного на PHP.
APC кэширует байт-коды. PHP превращает исходный код, который вы записываете в них, когда файл запрашивается или включается, а затем избавляется от них. С APC байт-код остается вокруг.
ob_start включает выходной буфер. Он может использоваться для кэширования одного эффекта программного кода , который является текстом, который он печатает.
Используйте APC, если вы хотите, чтобы ваша программа работала быстрее и потребляла меньше энергии процессора. Он не влияет на пропускную способность базы данных.
Вывод кэша ob_start, если вы хотите время от времени запускать программу и просто статически подавать свой последний вывод. Это экономит пропускную способность базы данных по цене световой информации и персонализации.
APC хорош, когда каждый запрос страницы передает новую информацию или информацию, специфичную для пользователя.
Вывод кэша ob_start, если вы выполняете некоторые тяжелые вычисления или доступ к данным, и все в порядке, что каждый получает тот же самый не совсем свежий результат.