Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

HTTP-кешування

  1. TL; DR
  2. Cache-Control
  3. no-cache і no-store
  4. public і private
  5. max-age
  6. Вибір правил Cache-Control
  7. Анулювання та оновлення кеш відповідей
  8. Список методів оптимізації

Наша взаимовыгодная связь https://banwar.org/

Завантажувати ресурси сторінки заново при кожному відвідуванні - це дуже незручно. Через повторних відправлень запиту сайт може працювати повільно. Крім того, користувачеві доведеться даремно витрачати велику кількість трафіку. Саме тому кешування даних має величезне значення при оптимізації сайту.

У всіх браузерах є вбудований HTTP-кеш. Нам залишилося переконатися, що в кожній відповіді сервер вказує правильні директиви HTTP-заголовків. Вони потрібні, щоб вказати браузеру, коли і на який період потрібно кешувати відповідь.

Коли сервер повертає запит, він також відправляє набір HTTP-заголовків, що описують тип контенту, довжину, команди для роботи з кешем, маркер підтвердження і т. Д. Наприклад, в прикладі вище сервер повертає запит розміром 1024 байт, віддає команду клієнту кешувати його на 120 секунд і відправляє маркер підтвердження (x234dff). Він використовується, щоб перевірити, чи не змінився ресурс, після того як термін дії відповіді закінчився.

TL; DR

  • Сервер відправляє маркер підтвердження в HTTP-заголовку ETag.
  • За допомогою маркера підтвердження можна перевірити, чи змінився ресурс.

Припустимо, після нашого першого виклику пройшло 120 секунд, і браузер почав новий запит до того ж ресурсу. Спочатку браузер перевіряє локальний кеш і знаходить попередній відповідь. Але його використовувати не можна, тому що термін його дії вже закінчився. Тепер браузер міг би просто відправити новий запит і отримати ще один повний відповідь. Однак це неефективно, тому що ресурс не змінився, і не має сенсу знову завантажувати байти, які вже є в кеші.

Щоб уникнути цієї проблеми, потрібно використовувати маркери підтвердження, зазначені в заголовках ETag. Сервер створює і повертає довільний маркер. Зазвичай це хеш або інша ідентифікаційна мітка файлу. Клієнт може не знати, як вона створюється, йому просто потрібно відправити її на сервер при наступному запиті. Якщо мітка залишилася колишньою, то ресурс не змінився і завантажувати його не треба.

Якщо мітка залишилася колишньою, то ресурс не змінився і завантажувати його не треба

В наведеному вище прикладі клієнт автоматично відправляє маркер ETag в HTTP-заголовку If-None-Match. Сервер перевіряє збіг маркера з потрібним ресурсом, і якщо той не змінився, відправляє відповідь 304 Not Modified. Це означає, що кеш відповідь залишився колишнім, і його можна знову використовувати протягом наступних 120 секунд. Зверніть увагу, що завантажувати ресурс ще раз не потрібно. Це зменшує час завантаження сторінки і економить пропускну здатність каналу.

Чим корисна перевірка актуальності для розробника? Браузер зробить все автоматично: перевірить, чи був вказаний маркер підтвердження раніше, додасть його в вихідний запит і оновить тимчасові позначки на основі відповіді від сервера. Все, що нам потрібно зробити, - перевірити, чи дійсно сервер відправляє потрібні маркери ETag. Щоб дізнатися, які параметри слід встановити, ознайомтеся з документацією до сервера.

Cache-Control

TL; DR

  • Правила кешування ресурсу можна вказати за допомогою HTTP-заголовка Cache-Control.
  • Директиви Cache-Control визначають, де, як і на який час може бути кеш ресурс.

Найкраще, якщо запит взагалі не доводиться відправляти на сервер. Використовуючи місцеву копію відповіді, можна уникнути затримки при роботі сайту і не викачувати зайві дані. Для цього специфікація HTTP дозволяє серверу повернути кілька директив Cache-Control , Що визначають, як і на який час відповідь може бути збережений в кеші браузера і інших проміжних кешах.

no-cache і no-store

Директива no-cache означає, що при повторному запиті до того ж URL відповідь можна використовувати тільки після перевірки змін. Таким чином, якщо вказаний відповідний маркер підтвердження (ETag), буде виконана повторна перевірка. Однак при відсутності змін дані не будуть скачиваться ще раз.

Відповідають вимогам Директиви ЄС no-store набагато простіше. Вона забороняє браузеру і всіх проміжних кешам зберігати будь-яку версію відповіді. Директива використовується, якщо у відповіді міститься особиста або банківська інформація. Кожен раз, коли користувач хоче використовувати цей ресурс, на сервер відправляється запит і відповідь повністю скачується заново.

public і private

Якщо у відповіді міститься директива public, його можна кешувати, навіть якщо з ним пов'язана HTTP-аутентифікація і код статусу відповіді зазвичай не можна зберігати. Ця директива потрібно рідко, тому що інша інформація, задана для кешування, (наприклад, max-age) показує, що відповідь можна зберегти.

Директива private, навпаки, використовується для відповідей, які можна зберегти в кеші браузера, але не в проміжних кешах. Це відбувається через те, що подібна інформація призначається для одного користувача. Наприклад, HTML-сторінку з особистими даними користувача можна кешувати в браузері, але не в мережах доставки контенту.

max-age

Ця директива вказує період часу в секундах, протягом якого завантажений відповідь може бути повторно використаний. Відлік починається з моменту запиту. Наприклад, max-age = 60 означає, що відповідь може бути кеш і використаний протягом 60 секунд.

Вибір правил Cache-Control

Вибір правил Cache-Control

Використовуйте схему вище, щоб визначити оптимальну політику кешування для одного або декількох ресурсів в додатку. Постарайтеся кешувати якомога більше ресурсів на максимально довгий період часу і надайте маркери підтвердження для кожної відповіді. Вони потрібні для перевірки актуальність даних.

Директиви Cache-Control Значення max-age = 86400 Відповідь можна зберегти в браузері і проміжних кешах (для нього вказана директива "public") на 1 день (60 секунд x 60 хвилин x 24 години) private, max-age = 600 Браузер може кешувати відповідь на 10 хвилин (60 секунд x 10 хвилин) no-store відповідь можна кешувати. При повторному запиті потрібно завантажити його заново.

За даними HTTP Archive, на 300 000 найпопулярніших сайтів за рейтингом Alexa близько половини викачаних запитів можна зберегти в кеші браузера . Це допомогло б заощадити величезні обсяги даних при повторному відвідуванні сторінок. Однак це не означає, що у вашому додатку обов'язково є 50% ресурсів, які можна стиснути. Деякі сайти зберігаються в кеші більш ніж на 90%, а на інших розміщено багато особистої або мінливої ​​згодом інформації, яку кешувати неможливо.

Перевірте ваші сторінки, визначте, які ресурси можна кешувати, і переконайтеся, що вони повертають правильні заголовки Cache-Control і ETag.

Анулювання та оновлення кеш відповідей

TL; DR

  • Відповіді, збережені в локальному кеші, можна використовувати, поки не закінчиться термін дії ресурсу.
  • Щоб оновити версію відповіді, додайте в URL файлу відповідну ідентифікаційну мітку.
  • Щоб продуктивність програми залишалася високою, визначте для нього ієрархію кешей.

Всі HTTP-запити спочатку направляються браузером в його кеш, щоб перевірити наявність дійсного збереженого відповіді. Якщо збіг знайдено, відповідь прочитується з кеша, зменшуючи час завантаження сайту і обсяг скачуваних даних. Однак нам може знадобитися оновити кеш відповідь або зробити його недійсним. Що нам робити в цьому випадку?

Припустимо, ми задали команду кешувати таблицю стилів CSS протягом 24 годин (max-age = 86400), але трохи пізніше оновили дизайн сайту і хочемо, щоб це побачили всі користувачі. Як повідомити їм, що потрібно оновити застарілу копію CSS в кеші? Це непросто, тому що нам потрібно змінити URL ресурсу.

Кешироваться відповідь зберігається в браузері до тих пір, поки не закінчиться термін його дії або поки він не буде видалений, наприклад при очищенні кеша браузера. Таким чином, під час зміни сторінки не всі користувачі працюють з однаковими версіями файлу: ті, хто завантажив ресурс недавно, бачать нову версію, а ті, хто кеш попередню (але ще дійсну) копію, - стару.

Як поєднати кешування ресурсів та оновлення сайту? Можна просто відредагувати URL файлу, щоб користувач скачував новий відповідь кожен раз, коли його контент змінюється. Для цього додайте в ім'я файлу ідентифікаційну мітку або номер версії, наприклад style. x234dff .css.

css

Установка правил кешування для кожного ресурсу дозволяє нам визначати ієрархії кешей. Завдяки цьому ми можемо вказувати, на який період збережений ресурс і коли користувач побачить його нову версію. Розглянемо приклад вище.

  • Для HTML вказана директива no-cache, тому браузер буде перевіряти актуальність документа при кожному запиті і при змінах завантажувати останню версію ресурсу. Крім того, ми змінили HTML-розмітку, додавши ідентифікаційні мітки в URL CSS- і JavaScript-ресурсів. Якщо ці файли зміняться, HTML теж оновиться, і браузер завантажить нову копію HTML-відповіді.
  • Браузерам і проміжним кешам (наприклад, мереж доставки контенту) дозволено зберігати CSS. Термін його дії закінчується через 1 рік. Зверніть увагу, що ми можемо встановити такий довгий період, тому що ми додали ідентифікаційну мітку в назву файлу. Тому якщо CSS оновиться, то URL теж зміниться.
  • Термін дії для JavaScript теж закінчується через 1 рік. Однак ресурс відзначений директивою private, тому що в ньому містяться особисті дані користувачів, які не можна зберігати в кеші мереж доставки контенту.
  • У кеш зображення немає версії або унікальної ідентифікаційної мітки, і термін його дії закінчується через 1 день.

Таким чином, за допомогою ETag, Cache-Control і унікальних URL ми можемо досягти потрібних нам результатів: тривалих термінів дії, контролю над кешування ресурсу і оновлень в будь-який момент.

Список методів оптимізації

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

Пам'ятайте про деякі радах і техніках, які допоможуть вам вибрати стратегію кешування:

  1. Використовуйте однакові URL для одного ресурсу. В іншому випадку контент кожен раз викачуватиметься заново. Пам'ятайте, що в URL регістр букв має значення !
  2. Переконайтеся, що сервер відправляє маркер підтвердження (ETag). Якщо ресурс на сервері не змінився, то завдяки цьому маркера ті ж байти не передаватимуть повторно.
  3. Визначте, які ресурси можна зберегти в проміжних кешах. Найчастіше це відповіді, які однакові для всіх користувачів.
  4. Визначте відповідний термін дії для кожного ресурсу. У даних можуть бути різні вимоги до частоти оновлення інформації. З огляду на це, виберіть відповідне значення max-age для кожного ресурсу.
  5. Встановіть відповідну ієрархію кешей для вашого сайту. Використовуйте URL ресурсів з ідентифікаційними відмітками контенту і короткі терміни дії (або директиву no-cache) для HTML-документів. З їх допомогою ви можете вказати, коли кешовані версії даних будуть оновлені.
  6. Зменшіть пересилання даних. Якщо частина ресурсу, наприклад функції JavaScript або набори CSS-стилів, оновлюється часто, відправляйте її код в окремому файлі. Тоді та частина контенту, яка змінюється рідко, наприклад коди бібліотек, може бути завантажена з кеша. Це зменшить кількість завантажуваних даних при оновленні ресурсу.

Чим корисна перевірка актуальності для розробника?
Що нам робити в цьому випадку?
Як повідомити їм, що потрібно оновити застарілу копію CSS в кеші?
Як поєднати кешування ресурсів та оновлення сайту?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: