Nacitani aktualnich souboru .js a .css na localu

vosy
Člen | 525
+
0
-

Ahoj,
posledni dobou se mi stava ze kdyz na localu upravim nejaky css nebo js soubor tak se nenacte aktualni ale prijde mi jako z nejake cache.
Musim v prohlizeci zobrazit dany soubour a reloadnout ho.

bude problem v prohlizeci nebo nastaveni nette?

nette verze 2.4.

dix

JZechy
Člen | 161
+
+2
-

@vosy CSS a JS si prohlížeč běžně cachuje, proto když ho změníš, tak většinou se nic nemění.

Řešení je přidat k tomu souboru parametr, například v práci máme v konfiguráku proměnou určující aktuální verzi, po každé, co upgradujeme, měníme tuto proměnou dle verze. Ta je v @layout.latte vypsaná ke všem CSS a JS stylem:

<link href=„style.css?v={$revision}“>

Jak dojde ke změně parametru, stáhne se nový CSS i JS.

A nebo můžeš použít třeba webloader komponentu, ta to parametrizuje automaticky a při každé změně cache se tak stahují aktuální styly a skripty.

Editoval JZechy (20. 3. 2017 21:16)

CZechBoY
Člen | 3608
+
0
-

Nebo upgradnout na ctrl+f5.

Myiyk
Člen | 321
+
+2
-

U css a js souborů jako verzi dávám datum úpravy souboru.

Sice se musí zjistit to datum, ale odpadá nutnost uprovavat nějakou verzi a není tedy možné na to zapomenout.

Rob Bob
Člen | 60
+
0
-

Myiyk napsal(a):

U css a js souborů jako verzi dávám datum úpravy souboru.

Sice se musí zjistit to datum, ale odpadá nutnost uprovavat nějakou verzi a není tedy možné na to zapomenout.

Při každém requestu? To se mi zdá jako zbytečně velká režie. Dal bych to např. jednorázově do nějakého deploy scriptu

GEpic
Člen | 562
+
0
-

Rob Bob napsal(a):

Myiyk napsal(a):

U css a js souborů jako verzi dávám datum úpravy souboru.

Sice se musí zjistit to datum, ale odpadá nutnost uprovavat nějakou verzi a není tedy možné na to zapomenout.

Při každém requestu? To se mi zdá jako zbytečně velká režie. Dal bych to např. jednorázově do nějakého deploy scriptu

Na vývoji si můžeš dát za ? aktuální timestamp, na produkci poté můžeš upravovat verze za ? třeba v configu nebo v nějakém adminu, nebo si někde uchovávat datum posledního deploye, to už je na tvé fantazii.

Editoval GEpic (21. 3. 2017 11:33)

Zuben45
Člen | 268
+
-1
-

V develop modu používám jak psal @Myiyk datum úpravy souboru.

cca takto:

{$basePath}/css/style.min.css?{filemtime(WWW_DIR.'/css/style.min.css')}

Mám v plánu si přidat filter pro styl, který by detekoval dev a production mod, a podle toho zadal bud filemtime a nebo cislo/nazev verze :)

ali
Člen | 342
+
0
-

Ja pri psani sveho webloadru jsem to vyresil tim, ze jakmile se znovu rebuildne kontejner nebo se zmeni md5 souboru, tak se refreshne i „token“ za otaznikem (pouze v debug modu).

CZechBoY
Člen | 3608
+
0
-

@ali to už je snad rychlejší ten filemtime než počítat pokaždý md5.

ali
Člen | 342
+
0
-

@CZechBoY no jelikoz kopiruju nastavene soubory z jedne slozky do www foldru, tak ten filemtime je v mem pripade nepouzitelny.

Nicmene jsem si to zmeril, a rozdil zas tak markantni neni
pri pouziti filemtime: ~0.010ms
pri pouziti file_md5: ~0.012ms
Kontrolovane soubory
normalize.css
bootstrap.min.css
font-awesome.min.css
jquery.min.js
tether.min.js
bootstrap.min.js
nette.ajax.js
netteForms.min.js
plus font soubory z font awesome

Editoval ali (22. 3. 2017 5:54)

GEpic
Člen | 562
+
+2
-

ali napsal(a):

@CZechBoY no jelikoz kopiruju nastavene soubory z jedne slozky do www foldru, tak ten filemtime je v mem pripade nepouzitelny.

Nicmene jsem si to zmeril, a rozdil zas tak markantni neni
pri pouziti filemtime: ~0.010ms
pri pouziti file_md5: ~0.012ms
Kontrolovane soubory
normalize.css
bootstrap.min.css
font-awesome.min.css
jquery.min.js
tether.min.js
bootstrap.min.js
nette.ajax.js
netteForms.min.js
plus font soubory z font awesome

Knihovny, které neměníme (jQuery, bootstrap.js, atp.) načítáme rovnou z CDN serverů, není potřeba je na každý projekt stahovat.

ali
Člen | 342
+
0
-

@GEpic to samozrejme, ale o tom rec nebyla (btw: moje applikace bezi na intranetu, takze tam ta moznost neni)

h4kuna
Backer | 740
+
+1
-

Ahoj,

připravil jsem jednoduchý filter, který řeší tento problém.