Кэширование в Веб разработке
на серверном и клиентском уровнях
(на примере связки MySQL + PHP)

Докладчик: ЯРЕМЕНКО Алексе...
Зачем?
▪ Уменьшение времени отклика приложения (сайта)
▪ Уменьшение нагрузки на сервер
▪ Уменьшение генерируемого трафика
...
Технология «клиент-сервер»

Запрос выполняется по протоколу HTTP
Возможные уровни кеширования

Серверный

Клиентский

▪ Запросы к БД
▪ Исполняемый код

▪ Статичные данные
(HTML, JS, CSS, ...
Кэширование запросов к БД
Почему иногда не срабатывает кэширование
▪ В MySQL запросы должны быть написаны
идентично (учиты...
Кэширование результатов работы на
жестком диске
▪ Можно кэшировать HTML блоки часто
вставляемые в код страницы
или целиком...
Кэширование данных в оперативной
памяти (Memcache, APC)
▪ Можно кэшировать как результаты запросов к БД,
результат сложных...
Кэширование на стороне клиента
▪ Заголовок Expires говорит браузеру брать
результат запроса из кэша до указанной даты
Expi...
Способы «оживления» страницы
•

В зависимости от Cookie при помощи JS показывать различные
блоки (авторизован / не авториз...
Спасибо за внимание!
С удовольствием отвечу на Ваши
вопросы!
Upcoming SlideShare
Loading in …5
×

Кэширование в Веб разработке на серверном и клиентском уровнях

155 views

Published on

Алексей Ярменко. Нагруженный форк

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
155
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • {}
  • Кэширование в Веб разработке на серверном и клиентском уровнях

    1. 1. Кэширование в Веб разработке на серверном и клиентском уровнях (на примере связки MySQL + PHP) Докладчик: ЯРЕМЕНКО Алексей Сергеевич
    2. 2. Зачем? ▪ Уменьшение времени отклика приложения (сайта) ▪ Уменьшение нагрузки на сервер ▪ Уменьшение генерируемого трафика ▪ Увеличение радости нашего пользователя
    3. 3. Технология «клиент-сервер» Запрос выполняется по протоколу HTTP
    4. 4. Возможные уровни кеширования Серверный Клиентский ▪ Запросы к БД ▪ Исполняемый код ▪ Статичные данные (HTML, JS, CSS, IMG) ▪ Результаты выполнения AJAX запросов ▪ Кэширование тяжелых данных на жестком диске ▪ Кэширование частых небольших данных в оперативной памяти
    5. 5. Кэширование запросов к БД Почему иногда не срабатывает кэширование ▪ В MySQL запросы должны быть написаны идентично (учитывется даже регистр) ▪ При обновлении таблицы (INSERT, UPDATE) кэш сбрасывается Решение: Вынести часто изменяемые таблицы отдельно ▪ Не кэшируются запросы содержащие функции времени, даты, а так же некоторые другие Решение: заменить функции на константы WHERE `date` > NOW()  WHERE `date` > '2012-05-06‘ ▪ Помните про лимит памяти и фрагментацию
    6. 6. Кэширование результатов работы на жестком диске ▪ Можно кэшировать HTML блоки часто вставляемые в код страницы или целиком страницы ▪ Готовые инструменты (например EZ cache) позволяют автоматически проверять наличие кэша, его свежесть и генерировать пути хранения файлов ▪ Правильно настроенный веб сервер может отдавать готовые HTML файлы очень быстро
    7. 7. Кэширование данных в оперативной памяти (Memcache, APC) ▪ Можно кэшировать как результаты запросов к БД, результат сложных вычислений, а так же часто используемые HTML блоки небольших размеров ▪ Memcache в основном используется для организации единого кэша между серверами ▪ APC помимо данных кэширует PHP код
    8. 8. Кэширование на стороне клиента ▪ Заголовок Expires говорит браузеру брать результат запроса из кэша до указанной даты Expires: Sun, 24 Jan 2013 20:59:20 GMT ▪ Результаты частых AJAX запросов можно сохранить в обычной переменной ▪ Склеивание JS, CSS и изображений в один файл чтобы минимизировать количество запросов к серверу
    9. 9. Способы «оживления» страницы • В зависимости от Cookie при помощи JS показывать различные блоки (авторизован / не авторизован) • <script src="/comments.php?songid=12345"></script> • SSI: <!--#if expr="СТРАНИЦА ПЕСНИ" --> один вид рекламы <!--#elif expr="СТРАНИЦА ГРУППЫ" --> второй вид рекламы <!--#endif -->
    10. 10. Спасибо за внимание! С удовольствием отвечу на Ваши вопросы!

    ×