Блог ленивого вебмастера

Методы запрета кеширования браузером динамического контента

Поле заголовка expires

Значением данного заголовка является дата, после которой содержимое ресурса устареет. Если пользователь после этой даты обратиться к ресурсу, браузер должен запросить ресурс у сервера, а не из локального кэша.

Если поле »expires« содержит дату, прошедшую, по отношению к текущей, то при следующем обращении к ресурсу браузер будет вынужден снова обратиться к серверу. Это произойдет вследствие того, что либо документ не будет занесен в кэш - как уже устаревший, либо при обращении к кэшу браузер определит, что документ уже устарел. Следующий листинг на php демонстрирует использование заголовка expires:

header ("expires: mon, 26 jul 1997 05:00:00 gmt");

Поле заголовка last-modified

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

запрашивает с сервера дату последнего обновления ресурса сравнивает полученную дату и дату ресурса в локальном кэше если ресурс на сервере новее ресурса в кэше - запрашивается ресурс с сервера.
Если ресурс, расположенный на сервере, содержит в данном поле текущую дату, то браузер будет каждый раз запрашивать ресурс с сервера, а не из локального кэша. Следующий листинг демонстрирует использование поля заголовка last-modified:

header ("last-modified: " . gmdate("d, d m y h:i:s") . " gmt");

Поля заголовка cache-control и pragma

И, наконец, поля заголовка, непосредственно отвечающие за кэширование ресурса. Поле «pragma» было определено в стандарте rfc 1945, описывающим протокол http 1.0. Данное поле считается устаревшим, но в некоторых случаях приходится использовать именно его. В частности некоторые proxy-сервера неправильно обрабатывают запросы к постоянно изменяющимся ресурсам, если вместе с ресурсом не передается данное поле заголовка.

Второе поле определено в стандарте rfc 2068, который описывает протокол http 1.1. Данное поле заголовка позволяет запретить кэширование, и каждый раз запрашивать ресурс с сервера. Следующий листинг демонстрирует использование полей заголовка cache-control и pragma для запрета кэширования:

header("cache-control: no-cache, must-revalidate"); header("pragma: no-cache");

Подробнее...


Распаковка ZIP-архива на FTP-сервере

Если Вам приходится достаточно часто закачивать по FTP скрипты, содержащие большое количество файлов (например, CMS, блоги), то можно использовать существенно более удобный способ их закачки: закачать один упакованный в ZIP файл и в последствии распаковать его прямо на сервере.

Согласитесь, что процесс закачки проходит гораздо быстрее, если заливать всего лишь один файл, нежели все файлы по отдельности, при условии одинакового размера в том и другом случае. Когда закачивается большое количество файлов, происходит множественное обращение FTP-клиента к серверу после каждого файла, на что уходит определенное время.

Подробнее...


Создание закруглённых углов без использования изображений.

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

Подробнее...


Хороший стиль программирования на PHP

Когда пишите PHP программу, придерживайтесь следующих простых правил:

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

Подробнее...