Stack: Craft CMS PHP Twig Composer Cache-busting GitHub

Wyzwanie

Każda aktualizacja CSS, JS lub grafiki na stronie opartej o Craft CMS narażała użytkowników na serwowanie przestarzałych plików z cache przeglądarki. Deweloperzy musieli ręcznie dodawać parametry wersji do URL-i statycznych assetów — lub polegać na zewnętrznych narzędziach do cache-bustingu. Brak natywnego, automatycznego mechanizmu wersjonowania w Craft CMS 3.x/4.x był realnym problemem przy każdym deploymencie.

Realizacja

Stworzyłem plugin Static Files Autoversioning, który rozszerza system szablonów Twig o funkcję version() — automatycznie dołączającą znacznik wersji do URL-i statycznych plików .

Plugin obsługuje trzy strategie wersjonowania:

  • Unix timestamp ostatniej modyfikacji pliku — zmiana pliku = nowy hash automatycznie
  • Plik build.txt — wersja synchronizowana z procesem CI/CD lub deploymentu
  • Zmienna lub ciąg znaków — pełna kontrola ręczna po stronie dewelopera

Użycie sprowadza się do jednej linii w szablonie Twig <link rel="stylesheet" href="{{ version('/css/styles.css') }}"> to generuje: /css/styles.css?v=12345678 .

Plugin działa niezależnie lub w parze z innymi rozwiązaniami cache: Varnish, Blitz, Cloudflare — a także z pluginem PDF Generator tego samego autora, umożliwiając wersjonowanie generowanych plików PDF .

Efekty

  • Wsparcie dla Craft CMS 3.x i 4.x — zgodność z aktualnym ekosystemem
  • Zero konfiguracji po instalacji — jedna komenda composer require, gotowe do użycia
  • Integracja z dowolnym pipeline CI/CD przez plik build.txt
  • Dostępny bezpłatnie w oficjalnym Craft Plugin Store z 245 aktywnymi instalacjami

Linki

🔗 Craft Plugin Store | GitHub

Używasz Craft CMS i chcesz zautomatyzować wersjonowanie assetów? Skontaktuj się — wdrożę plugin i dostosuję strategię cache-bustingu do Twojego workflow.

Wyceń GRATIS w 24h

Wycena w 24h • Zero spamu • Bezpieczne dane Protected by reCAPTCHA
Wyrażasz zgodę na przetwarzanie danych zgodnie z Polityką Prywatności, Regulaminem serwisu i Obowiązkiem informacyjnym RODO celem obsługi zapytania
magnifierchevron-left