Php и уеб

За оптимизиране на мрежата с помощта на механизъм за съхранение на един получен чрез HTTP документи в кеша за целите на използване им без да се прибягва до сървъра източник. Документи запаметяват в кеш паметта ще бъдат на разположение следващия път, когато се влиза, без разтоварване от първичния сървър, който е предназначен за подобряване на достъпа на клиентите скорост към тях и да се намали потока на мрежовия трафик.

Кешира в себе си са два вида - местни и общи. Местната кеша се съхранява директно на диск клиент, създава и управлява своя браузър. Общи - пълномощник организация кеш или доставчик, и може да се състои от един или повече прокси сървъри. Локален кеш е налице, най-вероятно при всеки браузър използва значителна част от обикновените хора, използващи интернет. И ако една малка част от сайтовете в момента се оценява потока на трафика, скоростта на изтегляне - важен критерий да се отчита при разработването на уеб-проект.

Може да се съхранява в кеш паметта на страницата се определя от динамичното информацията в източника на данни. По този начин необходимостта от кеша, се определя от вас, на базата на очаквания час на страница живот.

Когато става въпрос за избор на извадка за базата данни (например при търсене на зададена от потребителя дума), а след това тази страница не забравяйте да направите заявка от сървъра, на всяко повикване, без да се използва кеш, тъй като броят на исканите думи, които искате, е огромен, и ако ние също трябва да се справят с промяната набор от данни, кеширане е безсмислено. Или става въпрос за формиране Предполагам график идват посетители (която се променя с всяко посещение, че е практически с всеки разговор), а след това на кеш паметта е просто вредно.

Въпреки това, ако ние говорим за една и съща графика, но вчера, кешът е препоръчително, тъй като те вече няма да се промени и ние можем да си и потребителски ресурси и време, за да заредите спаси тези страници, като ги поставите в местен или споделен кеш. Като продължение на тази ситуация, формирането на графика не е в реално време и почасово. След това можете да се предскаже датата на края на "срок на годност", генерирани данни.

програма PHP-контрол може да кешира резултатите от неговата работа, за да се образува допълнителни полета в заглавната част на предизвикателство HTTP отговор функция Header ().

Няколко общи твърдения, характерни не само за PHP-програмата:

  • Страници, предавани по POST никога запаметяват в кеш паметта.
  • Страници, поискани от GET и съдържащи параметри (в URL присъства "?"), Не се запаметяват в кеш паметта, освен ако не е посочено друго.

По този начин, в повечето ситуации на допълнителни указания в програмата не е нужно да се добави. Акценти да бъдат доведени до знанието може да бъде намален до две:

  • забрана на кеша на документи кеширана по подразбиране
  • кеширане на документи, които не могат да бъдат кеширането по подразбиране.

Този проблем възниква, за PHP-скрипт се нарича без параметри, или е директории на индекса, но генерира данните лично при потребителя (например, въз основа на бисквитки или потребителски агент) или работещи на базата на бързо променящи се данни. Според протокола HTTP / 1.1 можем да работят следните области:

  • Изтича - Определя срока на годност на документа. Задаването в миналото определя забраната на кеша за страницата.
  • Кеш-контрол: не-кеша - управление на кеша. Стойността на не-кеша определя забрана кеш тази страница. За версията на HTTP / 1.0 работи "Pragma: не-кеша".
  • Last-Modified - Дата новите промени един съдържание. Полето е действителен само за статични страници. Apache замества тази област със стойността на поле Дата за динамично генерирани страници, включително страници, съдържащи SSI.

www.php.net Сайтът дава следния код, за да забраните кеширането.

Въпреки това, аз вярвам, че този удар с глава е излишно. В повечето случаи:

За да отбележат документ като "остарели" трябва да установи Изтича равно на полето за дата.

Е, ние не трябва да забравяме, че исканите от POST форми също не подлежат на кеширане.

Проблемът с обратен, тя може да изглежда на пръв поглед абсурдно. Въпреки това, в този има нужда. В допълнение към прост минимизиране на трафика в разработването на уеб-програма трябва да се вземат под внимание на комфорта на работа с него потребителя. Например, някои от вашите сървърни страници се генерират на базата на статични масови данни. Възможността за включването им в сървъра на кеш значително ще подобри скоростта на потребителя, и частично облекчи от многобройни новородения тази страница. Заглавие позволява съхранение на прокси сървъра:

Кеширане преди изтичането на коректността

Горното решение е доста простичък, но подходящ за повечето задачи. Но HTTP протокол / 1.1 има средства за по-тънък управление на кеша на страници, а има и задачи, които изискват използването на тези механизми. Като пример - уеб-приложения за работа с данни на голям обем и прогнозира динамика. Коректността на данните може да се настрои за дата на актуализациите на прогнозни, а за промяна на съдържанието. За тези случаи се използват различни заглавия за контрол на кеш.

Основната задача - да получи дата следващия понеделник в RFC-1123 формат

Друг подход се използва при по-високи информация оперативна актуализация и едновременно с висок трафик на сървъра (в противен случай кеширане няма да бъде ефективна) е да се използва кеш-контрол с глава: макс възраст = секунди, определя времето, след което документът се счита за остаряла и има по-висок приоритет при изчисляването " свежест "на документа.

Ако публикувате новини, с интервал от 30 минути:

Вземем примера на издаване на изображение от база данни, определени от тяхната самоличност. Обадете се на страницата е както следва:

така според страницата с правила не се съхранява в кеш паметта (има параметри), но с глава може да бъде да го контролират.

И приятна (или неприятно) съобщението на руските потребители Apache. От стари времена сървъра дава на потребителя кодирана върху него автоматично доставя всички страници (не само динамично) заглавна забрана за кеширане.

Така, че всички страници не са кеширани. Образуване на Валидна глава скрипт няма ефект. Защо го е направил, а някои от методите на борба са описани на apache.lexa.ru и няма нужда да се възпроизвеждат тези съвети тук. Като се има предвид работата PHP + руски Apache тук е как може да се отрази на възможността за кеширане.

За скриптове извеждане на изображения на ситуация проста - руски Apache не прекодира (така че не ustanavlivaetsrok изтичане) документи с MIME типа изображение / *. За да използвате кеша на текстови документи, вероятно трябва да използвате "Кеш-контрол: лично, макс възраст =" за решаване на страниците кеширани в браузъра. Въпреки, че това теоретично предположение, а не доказан.

"Изтича -. Задава датата на изтичане на документа Задаването в миналото определя забраната на кеша на страницата ..
Кеш-контрол: не-кеша - управление на кеша. Стойността на не-кеша определя забрана кеш тази страница. За версията на HTTP / 1.0 работи "Pragma: не-кеша".
Last-Modified - Дата новите промени един съдържание. Полето е действителен само за статични страници. Apache замества тази област със стойността на поле Дата за динамично генерирани страници, включително страници, съдържащи SSI.

www.php.net Сайтът дава следния код, за да забраните кеширането.

Въпреки това, аз вярвам, че този удар с глава е излишно. В повечето случаи:

хедър ( "Изтича на: Чет, 01 Януари 1970 00:00:01 GMT");

За да отбележат документ като "остарели" трябва да установи Изтича равно на полето за дата.

глава (. "Валидна:" gmdate ( "D, г М Y Н: I: а".) "GMT");

Е, ние не трябва да забравяме, че исканите от POST форми също не подлежат на кеширане. "

Половината глупости, половината от дата и не е точно работи,
да забраните кеширането на достатъчно
глава ( "Кеш-Control: не-магазин, не-кеша, трябва на повторно потвърждаване, макс възраст = 0");