php http заголовки - PullRequest
       15

php http заголовки

3 голосов
/ 23 июня 2009

Интересно было пару вещей.

Кэширует ли http-заголовок все на странице. И если у меня есть некоторые файлы javascript, он также кеширует их для последующих страниц, или это более сложно, чем это. Пример: если я кеширую все файлы javascript на page1.php, будут ли эти файлы все еще кэшироваться на page2.php или кешируются файлы для page1.php, применяются только к page1.php.

Другой вопрос ...

Должен ли я удалить заголовки http и просто использовать APC, и если да, то насколько это сложно, или на самом деле можно ли использовать оба (спрашивая, потому что yslow говорит, что использовать заголовки http). Спасибо за любую информацию, я читал, но на эти вопросы не было ответа в тексте.

Ответы [ 2 ]

4 голосов
/ 23 июня 2009

Ваш веб-сервер позаботится о кэшировании, если вы просто обслуживаете обычные .js файлы. Файлы .js будут загружены при первой ссылке на одну из ваших страниц. Когда пользователь перезагружает эту страницу или полностью переходит на другую страницу, которая использует тот же файл .js, браузер будет использовать кэшированную копию. Это применимо, когда вы загружаете скрипты через <script src="code.js"></script> теги.

Это если у вас есть отдельные, отдельные .js файлы. Если, с другой стороны, ваш код JavaScript скрыт в HTML, который генерируют ваши PHP-скрипты, например:

<script type="text/javascript">
  alert("Hello world!");
</script>

... эти скрипты будут генерироваться каждый раз при загрузке файла .php. Если вы хотите кэшировать выходные данные своих PHP-сценариев, то вам нужно будет самостоятельно управлять кэшированием, устанавливая соответствующие заголовки HTTP из своих PHP-сценариев, будь то через семейство заголовков Cache-Control или If-Modified-Since и ETag стиль заголовков.

Кэширование и PHP-файлы обычно не сочетаются друг с другом, поскольку вы обычно генерируете динамический контент, который изменяется в зависимости от пользовательского ввода, времени суток, файлов cookie и т. Д. Поскольку кеширование является чисто оптимизацией, общее предупреждение программирования против преждевременной оптимизации применяется. Если вы испортите свои HTTP-заголовки, у вас может возникнуть много головной боли (поверьте мне!). Как правило, вы, вероятно, можете просто позволить Apache или IIS позаботиться о таких продвинутых HTTP-вещах, как этот, и использовать только заголовки HTTP, если у вас есть , для этого нужно .

1 голос
/ 23 июня 2009

Я думаю, вы путаете разные типы кэширования. Вы говорили о 3 или 4 очень разных вещах здесь.

  1. кэширование браузера - любой обычный браузер будет кэшировать изображения, файлы JS и CSS-файлы между страницами. Это означает, что во второй раз браузер хочет отобразить какое-то конкретное изображение с вашего сайта, он загружает его из локального дискового кэша, а не возвращается на ваш сервер для этого. Все эти вещи просто случаются - не связывайтесь с этим, и это просто работает. (Исключения: пользователь отключил кэширование, вы изменили заголовки, чтобы избежать кэширования, ваши mime.types настроены неправильно, поэтому браузер неправильно обрабатывает эти файлы.)

  2. Кэширование содержимого на стороне сервера - если ваши страницы медленно отображаются на СЕРВЕРЕ, вы можете использовать различные схемы кеширования диска и ОЗУ, чтобы сохранить вывод и предотвратить необходимость рендеринга каждой страницы сервером. каждый раз. Это работает только для довольно статичных сайтов или статических частей страниц.

  3. Кэширование содержимого APC - в APC есть команды, которые позволяют помещать произвольный контент в кэш-память ОЗУ на стороне сервера. Если фрагмент вашей системы занимает много времени для рендеринга, но может быть повторно использован многими серверными ударами, это хороший выбор.

  4. Кэширование кода APC. Ваши текстовые PHP-скрипты «псевдоскомпилируются», а затем отправляются в среду выполнения PHP для выполнения. Этап "псевдо-компиляции" может быть очень медленным и избыточным, поэтому APC кэширует этап "псевдо-компилирования" PHP в ОЗУ. Это может очень быстро ускорить весь сайт.

Извините, если это TMI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...