sonyps4.ru

Photoshop cs3 как сделать плоские иконки. Как проще и быстрее всего сделать из картинки иконку в фотошопе? Создаём значок в программе Paint

Запрет кэширования посредством PHP

Запрет кэширования посредством PHP

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

Запретить кэшировать документы браузером и Proxy-серверами можно при помощи средств языка PHP , а именно функции Header().

Для этого надо использовать в начале сценария следующие команды:

Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); //Дата в прошлом Header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 Header("Pragma: no-cache"); // HTTP/1.1 Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");

Для полного запрета кэширования приходиться всегда посылать 4 указанных заголовка, и ни один пропустить нельзя - в противном случае не сработает либо браузер, либо Proxy-сервер.

Из книги Разгони свой сайт автора Мациевский Николай

Спецификация кэширования В спецификации RFC-2616 HTTP-кэшированию посвящена целая глава. В ней подробно рассматривается, что означают отдельные заголовки. Давайте остановимся на ключевых моментах.Заголовок Expires устанавливает время актуальности информации. Для ресурсов,

Из книги Реестр Windows автора Климов Александр

Практическое запрещение кэширования Запретить кэширование можно и прямо из конфигурации Apache (подробная конфигурация для оптимальной производительности приводится в восьмой главе). Для этого нам нужны следующие строки:# Проверяем, что подключен mod_headers# Тогда выставляем

Из книги Работа в Интернете автора Макарский Дмитрий

Разрешение кэширования При запрете кэширования мы заставим браузер каждый раз заново загружать документы и ресурсные файлы. В последнем случае это совсем не оптимально и может привести к заметному замедлению работы с сайтом. Давайте рассмотрим, как можно выставить срок

Из книги Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ автора Мейерс Скотт

Отмена кэширования пароля (Internet Explorer 4 и выше) По некоторым сведениям, эта настройка имеет ограниченное применение. Приведенная информация относится к Internet Explorer версии 4.01 с установленным 2-м пакетом обновлений, к 5 и 5.01 версиям Internet Explorer, работающему под Windows 95, 98, NT 4.0 и Internet

Из книги Создание сайта. Раскрутка сайта. Заработок денег на сайте автора Макс Анатолий

Загрузка и выгрузка файлов посредством FTP Поговорим о том, как можно выгрузить свои файлы на удаленный сервер Интернета, чтобы их потом могли загружать другие, а также рассмотрим еще один способ загрузки файлов на свой компьютер, не связанный с использованием браузеров и

Из книги Сетевые средства Linux автора Смит Родерик В.

Реализация паттерна «Стратегия» посредством указателей на функции Идиома NVI – это интересная альтернатива открытым виртуальным функциям, но с точки зрения проектирования она дает не слишком много. В конце концов, мы по-прежнему используем виртуальные функции для

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

Реализация паттерна «Стратегия» посредством класса tr::function Если вы привыкли к шаблонам и их применению для построения неявных интерфейсов (см. правило 41), то применение указателей на функции покажется вам не слишком гибким решением. Почему вообще для вычисления

Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.

Правило 38: Моделируйте отношение «содержит» или «реализуется посредством» с помощью композиции Композиция – это отношение между типами, которое возникает тогда, когда объект одного типа содержит в себе объекты других типов. Например:class Address {...}; // адрес проживанияclass

Из книги Работа в Интернете. Энциклопедия автора Ташков Петр Андреевич Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

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

Из книги автора

13.4.1. Настройка кэширования на DNS-сервере Для того, чтобы насладиться такой возможностью, следует в блок options файла named.conf добавить следующие параметры:forward first;forwarders { 81.3.165.35; 81.3.150.2;};Директива forwarders задает заключенный в фигурные скобки список IP-адресов DNS-серверов, которым

Из книги автора

Разрешение конфликтов посредством линейного зондирования Если количество элементов, которые, скорее всего, должна содержать хеш-таблица, известно, можно выделить место для хеш-таблицы, содержащей это количество элементов и небольшое число свободных ячеек "на всякий

Из книги автора

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

Из книги автора

Разрешение конфликтов посредством группирования Существует разновидность метода связывания для разрешения конфликтов, которая носит название группирования в блоки (bucketing). Вместо помещения связного списка в каждую ячейку, в нее помещается группа, которая по существу

Из книги автора

Загрузка и скачивание файлов посредством FTP Рассмотрим, как можно загрузить свои файлы на удаленный сервер Интернета, чтобы их потом могли загружать другие, а также обсудим еще один способ загрузки файлов на свой компьютер, не связанный с использованием браузеров и

Современные браузеры достаточно часто используют в своей работе локальный кэш. Что это означает? Это означает что браузер, получив от сервера html-документ, картинку или другой ресурс, размещает его в своем локальном кэше (проще говоря, записывает полученный ресурс на жесткий диск машины пользователя) и при последующих запросах к такому ресурсу не обращается на сервер, а получает ресурс из локального кеша.

Данная алгоритм работы браузеров резко повышает скорость загрузки html-документов. Так как если ресурс уже загружался, и как следствие расположен в локальном кэше, то время доступа определяется не пропускной способностью канала связи (например, модемного подключения) а скоростью работы жесткого диска.

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

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

Генерация нового URL

Допустим что запрашиваемый ресурс имеет следующий url: test.html?id=7. Как видно из url’а ему передается один параметр. Добавим, например, при помощи JavaScript, в url еще один параметр, а его значением сделаем случайное число. В результате url будет выглядеть следующим образом: test.html?id=7&rnd=0.6700820127538827. Случайный параметр будет каждый раз генерироваться заново. Ниже приводится листинг, демонстрирующий этот подход:

Генерация нового URL document.write (""); тестовая ссылка

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

Управлять кэшированием можно так же со стороны сервера. Для этого ресурс, отправляемый браузеру, сопровождается полями заголовка. Детальное описание полей заголовка может быть найдено в стандарте Rfc 2068, который описывает протокол HTTP 1.1.

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

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

Если поле >Expires< содержит дату, прошедшую, по отношению к текущей, то при следующем обращении к ресурсу браузер будет вынужден снова обратиться к серверу. Это произойдет вследствие того, что либо документ не будет занесен в кэш — как уже устаревший, либо при обращении к кэшу браузер определит, что документ уже устарел. Следующий листинг на PHP демонстрирует использование заголовка Expires:

Поле заголовка Last-Modified

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

* запрашивает с сервера дату последнего обновления ресурса
* сравнивает полученную дату и дату ресурса в локальном кэше
* если ресурс на сервере новее ресурса в кэше — запрашивается ресурс с сервера

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

header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

Поля заголовка Cache-Control и 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");

Хорошо Плохо

Как запретить кэширование?

Ответ мастера:

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

Сделаем следующее, если используется Mozilla Firefox. В адресную строку браузера вписываем opera:config. Появится окно, которое предупредит о том, что нужно быть предельно острожным. Нажмем «Ок». Находим «Фильтр», там набираем browser.cache. После этого в настройках останется не более десяти строчек.

Для отключения кэширования найдем browser.cache.disk.enable и browser.cache.memory.enable. Заострим внимание на поле значения. Обе этих строчки имеют значение true. Изменим его на false. После этого перезапустим браузер, для того чтобы все изменения вступили в силу. 2.Сделаем следующее, если используется Internet Explorer. В меню откроем «Сервис», далее жмем по окно «Свойства обозревателя». Откроется окно свойств браузера. Переходим к вкладке «Общие», там нажимаем «Параметры».

Затем в селекторе «Проверять наличие обновления сохраненных страниц» выберем «Никогда». Для запрета кэширования поставим ноль возле окна «Используемое место на диске». После этого нажимаем «Ок» для принятия изменений.

Если используется Opera. Нажмем клавиши Ctrl+F12, далее выберем «Общие настройки». Перейдем к вкладке «Расширенные», потом к «Истории». Вкладке «Кэш в памяти», а также «Дисковый кэш» присвоим значение «Отключено» для отмены кэширования. В окнах «Проверять документы» и «Проверять изображения» выберем «Никогда». Далее «Ок», изменения вступят в силу.

Если используется Google Chrome. Нажмем правой кнопкой мышки на ярлык запуска браузера. После появления контекстного меню выберем окно «Свойства». После этого в появившемся окне перейдем на вкладку «Ярлык». В окне, где указан адрес файла, допишем “-disk-cache-size=0-media-cache-size=0”. Поместим данную команду за кавычками адреса файла. Применим изменения.

Сколько раз писано и переписано о тэге … Казалось бы, все! Хватит! Закрыли тему! Но нет! Ведь не все сказали! Вернее, кое-где все, но это попробуй найди еще. Потыкайся во всякие Rambler’s и Яndex’ы…

Итак, поговорим о кэшировании. Собственно, для чего оно нужно всем нам, бедным пользователям интернета, как среды обитания. Сокращение трафика — вот она, польза! Ну зачем нам десять раз на день заново качать из сети первую страницу какого-нибудь поискового каталога, когда можно аккуратненько положить ее в кэш и забыть о медленной загрузке для этого сайта? Во-от, именно так и делают. Углубимся в проблему.

Всем известно, что разных версиях протоколов HTTP применяются свои директивы управления кэшированием. Cache-Control — директива протокола HTTP/1.1. А параметры у нее вот такие:

Все перечисленные атрибуты (кроме взаимоисключающих) можно перечислять через запятую. Понимаю, не все ясно, сейчас кое-что поясню.

1. Запрет на кэширование вообще (документ не будет кэшироваться ни proxy-сервером, ни браузером):

2. Документ будет кэшироваться браузером, но не будет кэшироваться proxy-сервером.

3. Документ будет кэшироваться, даже если и не должен, вроде бы, при обычных обстоятельствах.

4. Документ кэшируется, но не сохраняется в архиве.

5. Можно прямо сказать браузеру: «Обнови-ка мне эту страницу». (В параметре max-age указано, на сколько секунд кэшируется документ). Может быть полезно при использовании PHP для програмного обновления страниц.

6.А можно сказать это только прокси-серверу.

В наследство от протокола HTTP 1.0 нам достался очень простой способ управления кэшированием, определяется директивой Pragma. Данная штука является общей директивой заголовка HTTP-сообщения в HTTP/1.0, и других значений, кроме no-cahce, не имеет:

В протоколе HTTP 1.1 данная директива заменена директивой Cache-Control со значением no-cache. Большинство серверов и клиентов поддерживают эту директиву и правильно ее отрабатывают.

Для запрета на кэширование иногда не достаточно применения директив управления кэшированием. Так Netscape кэширует документы или их компоненты даже при наличии директив Cache-Control и Pragma. Для того, чтобы заставить перечитать компонент страницы (он ведь получается с сервера по самостоятельному HTTP-запросу) можно установить директиву Expires.

Вот такой вот получился разговор о кэшировании. А с тэгом META мы еще встретимся. И не раз…

Хорошо Плохо

    Мета теги - это необязательные аттрибуты страницы, размещенные в ее заголовке, которые содержат описание страницы, ключевые слова к ней, некоторую информацию об…

Современные браузеры достаточно часто используют в своей работе локальный кэш. Что это означает? Это означает что браузер, получив от сервера html-документ, картинку или другой ресурс, размещает его в своем локальном кэше (проще говоря, записывает полученный ресурс на жесткий диск машины пользователя) и при последующих запросах к такому ресурсу не обращается на сервер, а получает ресурс из локального кеша.

Данная алгоритм работы браузеров резко повышает скорость загрузки html-документов. Так как если ресурс уже загружался, и как следствие расположен в локальном кэше, то время доступа определяется не пропускной способностью канала связи (например, модемного подключения) а скоростью работы жесткого диска.

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

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

Генерация нового URL

Допустим что запрашиваемый ресурс имеет следующий url: test.html?id=7. Как видно из url"а ему передается один параметр. Добавим, например, при помощи JavaScript, в url еще один параметр, а его значением сделаем случайное число. В результате url будет выглядеть следующим образом: test.html?id=7&rnd=0.6700820127538827. Случайный параметр будет каждый раз генерироваться заново. Ниже приводится листинг, демонстрирующий этот подход:

Генерация нового URL document.write (""); тестовая ссылка

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

Поля заголовков

Управлять кэшированием можно так же со стороны сервера. Для этого ресурс, отправляемый браузеру, сопровождается полями заголовка. Детальное описание полей заголовка может быть найдено в стандарте Rfc 2068, который описывает протокол HTTP 1.1.

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

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

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

Поле заголовка Last-Modified

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

  • запрашивает с сервера дату последнего обновления ресурса
  • сравнивает полученную дату и дату ресурса в локальном кэше
  • если ресурс на сервере новее ресурса в кэше - запрашивается ресурс с сервера

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

Header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

Поля заголовка Cache-Control и 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");



Загрузка...