R2 storage, media preconnect, filename normalization, graph email

This commit is contained in:
2026-08-27 20:20:56 +02:00
parent a695ec7319
commit a8a632e1b0
9 changed files with 135 additions and 2 deletions
+26 -1
View File
@@ -183,4 +183,29 @@ czysta nazwa trafia i do bazy, i do bucketa). Dlaczego to ważne:
ścieżki i cache.
Sama funkcja `normalizeFilename(name)` też jest wyeksportowana, gdybyś potrzebował
jej poza hookiem.
jej poza hookiem.
## Preconnect do domeny mediów (wydajność)
Komponent `MediaPreconnect` generuje `<link rel="preconnect">` + `dns-prefetch`
dla domeny mediów (R2_PUBLIC_URL) — przeglądarka nawiązuje połączenie TLS/DNS
z CDN zawczasu, zanim napotka pierwszy `<img>`. Zysk ~150–300 ms na pierwszym
obrazie.
```tsx
// layout.tsx — w <head> (albo górze <body>, Next hoistuje link tagi)
import { MediaPreconnect } from '@intecion/ipal-kit/rsc'
<head>
<MediaPreconnect />
</head>
```
Czyta domenę z **R2_PUBLIC_URL** (to samo źródło co buildR2Storage) — zero
hardkodu, jedno źródło prawdy. Gdy R2_PUBLIC_URL nie ustawione (lokalny dysk,
brak CDN) → nie renderuje nic. Zmiana domeny mediów = zmiana jednej zmiennej
env, komponent podąża automatycznie.
> NIE hardkoduj `<link rel="preconnect" href="https://media.klient.pl">` ręcznie
> w layoutcie — to zaszywa domenę klienta w kodzie. Użyj MediaPreconnect, który
> bierze ją z env.