Кеширование — это процесс временного хранения данных, чтобы ускорить доступ к ним. Оно используется для снижения нагрузки на сервер, увеличения скорости работы приложения и оптимизации использования ресурсов.
1. Что такое кеширование?
Кеширование — это метод хранения копий данных в быстродоступных местах, таких как оперативная память или локальное хранилище клиента. Оно минимизирует необходимость повторного запроса к источнику данных (например, базе данных или API).Основные уровни кеширования
1. **Серверное кеширование**: Хранение данных в памяти или специализированных инструментах (например, Redis). 2. **CDN (Content Delivery Network)**: Хранение статических файлов (CSS, JS, изображения) в распределённых узлах сети. 3. **Клиентское кеширование**: Использование локального хранилища браузера (LocalStorage, IndexedDB).2. Redis
Что такое Redis?
Redis (Remote Dictionary Server) — это высокопроизводительное хранилище данных в оперативной памяти, используемое для серверного кеширования. Оно поддерживает различные структуры данных, такие как строки, списки, хэши и множества.Основные команды Redis
1. **Запись данных**: ```bash SET key value ``` 2. **Чтение данных**: ```bash GET key ``` 3. **Установка времени жизни (TTL)**: ```bash SETEX key 3600 value ``` 4. **Удаление данных**: ```bash DEL key ```Использование Redis в Node.js
1. Установка: ```bash npm install redis ``` 2. Пример кода: ```javascript const redis = require('redis'); const client = redis.createClient();client.on('connect', () => { console.log('Connected to Redis'); });
client.set('key', 'value', (err, reply) => { console.log(reply); // OK });
client.get('key', (err, reply) => { console.log(reply); // value });
text
---
<h2 id="3-cdn-content-delivery-network">3. CDN (Content Delivery Network)</h2>
<h3 id="что-такое-cdn">Что такое CDN?</h3>
CDN — это сеть серверов, распределённых по всему миру, которые обеспечивают быстрый доступ к статическим файлам. Основная цель — минимизировать задержки доставки контента пользователям.
<h3 id="как-работает-cdn">Как работает CDN?</h3>
1. Статические файлы (CSS, JavaScript, изображения) загружаются на узлы CDN.
2. Пользователь получает данные с ближайшего узла CDN, а не с основного сервера.
<h3 id="примеры-cdn">Примеры CDN</h3>
- **Cloudflare**: Популярный CDN с дополнительными функциями безопасности.
- **AWS CloudFront**: Интеграция с сервисами Amazon.
- **Akamai**: Один из самых масштабных CDN.
<h3 id="пример-использования-cdn">Пример использования CDN</h3>
1. Загрузка статических файлов:
```html
<link rel="stylesheet" href="https://cdn.example.com/styles.css">
<script src="https://cdn.example.com/app.js"></script>
- Настройка в веб-сервере (например, Nginx):
nginx
location /static/ { proxy_pass https://cdn.example.com/static/; }
4. Кеширование на стороне клиента
Способы кеширования
1. **LocalStorage**: Хранение данных в браузере без ограничения времени жизни. ```javascript localStorage.setItem('key', 'value'); console.log(localStorage.getItem('key')); // value ```-
SessionStorage: Хранение данных на время текущей сессии браузера.
javascriptsessionStorage.setItem('key', 'value'); console.log(sessionStorage.getItem('key')); // value
-
IndexedDB: Хранение структурированных данных для офлайн-приложений.
javascriptconst request = indexedDB.open('myDatabase', 1); request.onsuccess = () => { console.log('Database opened successfully'); };
HTTP-заголовки для кеширования
- **Cache-Control**: Указывает, как и сколько времени кешировать данные. ```http Cache-Control: max-age=3600, public ``` - **ETag**: Используется для проверки изменений ресурса. ```http ETag: "5d8c72a5ed8b" ```Итоговые вопросы для подготовки
- Как Redis помогает ускорить работу серверных приложений?
- Какие преимущества даёт использование CDN?
- В чём разница между LocalStorage и SessionStorage?
- Какие HTTP-заголовки используются для кеширования?
- Как выбрать подходящий метод кеширования для проекта?
Совет: Настройте кеширование на всех уровнях вашего приложения (серверное, клиентское и CDN), чтобы повысить производительность и снизить задержки доставки данных.