У чому справа?
Вже є добре налагоджена методика, яка називається кешування на стороні клієнта. Що приносить локальному сховищу HTML5, у якому випадку кешування бракує?
У вас може бути якась дивна програма, яка повинна динамічно завантажувати шматки коду JavaScript, щоб ви не могли ефективно використовувати кеш, але це надзвичайно рідкісний випадок.
Також пам’ятайте про інше. У веб-переглядачах є спеціальна політика кешування, і більшість браузерів добре керує кешем (видаляючи лише старіший вміст тощо). Реалізуючи домашній кеш, ви перешкоджаєте браузерам правильно керувати ним. Не тільки його можна критикувати самостійно, але це також зашкодить вам рано чи пізно. Приклад: коли користувачі веб-програми повідомляють про помилки, ви часто відповідаєте, просячи їх очистити кеш. Я не впевнений, що ви запитаєте у вашому випадку, оскільки очищення кеша ніколи не вирішить проблеми з вашим веб-додатком.
У відповідь на вашу першу редакцію (друга редакція поза темою):
Я знаю кеш браузера, буде ще перевірка доступу до заголовка
Здається, вам не вистачає розуміння кешування браузера. Ось чому важливо зрозуміти, як це працює спочатку, перш ніж почати впроваджувати власний механізм кешування в домашніх умовах . Винаходьте власне колесо лише тоді, коли ви достатньо зрозумієте існуючі колеса і маєте вагомі причини не користуватися ними. Дивіться пункт 1 моєї відповіді на питання "Повторно винаходити колесо і НЕ шкодувати про це" .
Надаючи деякі дані через HTTP, ви можете вказати кілька заголовків, пов’язаних із кешем:
Last-Modified
визначає, коли зміст змінено,
Expires
вказує, коли браузер повинен запитати сервер, чи змінено вміст .
Ці два заголовки дозволяють веб-переглядачу:
- Уникайте завантаження вмісту знову і знову. Якщо
Last-Modified
встановлено останній місяць, а вміст уже було завантажено сьогодні за кілька годин, завантажувати його знову не потрібно.
- Уникайте запитів щодо дати останнього змінення файлу. Якщо
Expires
з об'єкта кешу є 5 травня - й , 2014 року, ви не повинні видавати будь-який запит GET ні в 2011, ні в 2012 або 2013 році, так як ви знаєте , що кеш уточнений.
Другий важливий для CDN. Коли Google обслуговує JQuery відвідувачу Stack Overflow або cdn.sstatic.net
подає зображення чи таблиці стилів, використовувані Stack Overflow, вони не хочуть, щоб браузери кожен раз запитували нову версію. Натомість вони подають ці файли один раз, встановлюють термін придатності щось досить довго, і це все.
Ось, наприклад, скріншот того, що відбувається, коли я заходжу на домашню сторінку Stack Overflow:
Є 15 файлів для обслуговування. Але де всі ці 304 Not Modified
відповіді? У вас є лише три запити вмісту, які змінилися. Для всього іншого браузер використовує кешовану версію, не запитуючи жодного сервера .
На закінчення, вам дійсно потрібно подумати двічі, перш ніж реалізувати власний механізм кешування, і особливо знайти хороший сценарій, де це може бути корисним . Як я вже говорив на початку моєї відповіді, я можу знайти тільки один: де ви служите шматки JavaScript , щоб використовувати їх через, OMG, eval()
. Але в цьому випадку я впевнений, що є кращі підходи, які є:
- Більш ефективно, використовуючи стандартні методи кешування, або
- Простіше в обслуговуванні.