docs(articles): From Magento to Symfony, a requalification guide grouped into sections
uk/articles/magento-to-symfony/infrastructure/cache.md
новий файл +36
−0
1
+
# Кеш
2
+
3
+
**Magento** · CacheInterface
4
+
5
+
```php
6
+
$data = $this->cache->load('faq_popular');
7
+
if ($data === false) {
8
+
$data = $this->serializer->serialize(
9
+
$this->repository->getPopular(5)
10
+
);
11
+
$this->cache->save($data, 'faq_popular', ['faq'], 3600);
12
+
}
13
+
14
+
$this->cache->clean(['faq']);
15
+
```
16
+
17
+
**Symfony** · Cache Contracts
18
+
19
+
```php
20
+
public function __construct(
21
+
private TagAwareCacheInterface $cache,
22
+
) {}
23
+
24
+
$popular = $this->cache->get('faq_popular', function (ItemInterface $item) {
25
+
$item->expiresAfter(3600);
26
+
$item->tag(['faq']);
27
+
return $this->questions->findPopularIds(5);
28
+
});
29
+
30
+
$this->cache->invalidateTags(['faq']);
31
+
```
32
+
33
+
- `get()` з callback захищає від stampede: обчислення запускає лише один процес.
34
+
- Пули описують у `framework.cache.pools`: окремий Redis для сесій, окремий для даних.
35
+
- `cache:clear` чистить лише системний кеш (контейнер, маршрути, метадані). Дані в пулах чистить `cache:pool:clear cache.app`.
36
+
- Повної сторінкової кеш-системи немає. Є HTTP-кеш: `#[Cache(public: true, maxage: 600)]` на дії, `HttpCache` як PHP reverse proxy, ESI для фрагментів. Інвалідація за тегами у Varnish, як `X-Magento-Tags`, — через FOSHttpCacheBundle.