APF-Tracker

Adventure PHP Framework Issue Management


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000139Adventure PHP FrameworkNeues Feature // New Featurepublic2014-02-05 08:232016-11-27 19:10
ReporterScreeze 
Assigned To 
PrioritynormalSeverityfeatureReproducibilityN/A
StatusnewResolutionopen 
Product Version2.0 
Target Version3.4Fixed in Version 
Summary0000139: HtmlHeader: JS/Css-Dateien&Pakete Versions-Pseudoparameter
DescriptionNach Updates, welche auch JS und CSS Dateien und Pakete ändern, hat man oft das Problem, dass im User-Cache noch eine alte Datei liegt, und Inhalte deshalb falsch dargestellt werden, oder Javascripte nicht mehr funktionieren.

Meine Idee zur Lösung des Problems wäre ein Pseudo-Parameter, welcher an die URL gehängt wird, und abhängig vom Inhalt der Dateien ist.
z.B. könnte hier der md5-Wert der Datei angehängt werden.
Ändert sich die Datei (oder das Paket) auf dem Server, ändert sich der MD5 Wert. Da dieser immer an die URL gehängt wird, lädt der Client die Datei anschließend automatisch neu herunter, weil er diese URL noch nicht kennt.

Beispiel:
http://localhost/BARF/?APF_extensions_htmlheader-action:JsCss=package:js.js|v:098f6bcd4621d373cade4e832627b4f6 [^]

Der Parameter muss Serverseitig nicht ausgewertet werden, er soll lediglich den Client dazu bewegen bei einem Update eine neue Datei zu laden.
TagsNo tags attached.
Codereferenz: ([Datei]:[Zeile])
Namespaceextensions
Attached Files

- Relationships

-  Notes
(0000199)
Screeze (developer)
2014-02-06 08:48

Hab das mal kurz ausprobiert: Die ganze Datei aus dem Cache zu laden bei jedem Request ist ne blöde Idee. Ich würde stattdessen einen Kompromiss machen und die Dateigröße als indikator nehmen. ist zwar nicht 100%ig, aber besser. Änderungsdatum eines packages würde ein reload herbeiführen, jedesmal wenn der server-cache abläuft und neu generiert.
Denke Dateigröße wäre hier der performanteste Kompromiss.
(0000200)
Screeze (developer)
2014-02-06 08:54

Denkfehler: filesize zu nehmen ist ebenso nicht praktikabel. Wenn Datei nicht vorhanden -> geht nicht.
Wenn Datei vorhanden aber eigentlich auf dem Server expired -> kein Gewinn
Und um letzteres zu prüfen muss ich doch wieder die ganze Datei laden.

Habt jemand eine bessere Idee?
(0000201)
Screeze (developer)
2014-02-06 08:59

Idee:
Wir könnten beim Erzeugen des Packages den md5-Wert generieren und separat abspeichern, und dann diesen Wert einfach auslesen.
Das Problem der nicht vorhandenen Dateien können wir auf 2 Arten lösen:

1. random-Wert oder timestamp als version-parameter nehmen. Nachteil: Package wird dann zwar erst beim Abrufen generiert, und die Seite sofort ausgeliefert, aber dafür wird das Package beim nächsten Request noch einmal geladen, weil dann der Hashwert da ist.

2. Paket sofort generieren. Nachteil: Auslieferung der Webseite dauert länger, dafür wird das Paket nur einmal vom Client abgerufen, da der md5 Wert gleich zur Verfügung steht.

Würde zu Methode 2 tendieren, da so oder so gewartet werden muss, bis die Styles und JS Dateien da sind, um sinnvoll mit der Seite interagieren zu können.

Was haltet ihr von der Idee?
(0000202)
ChristianAchatz (administrator)
2014-02-06 21:11

Effektiv ist der Parameter abhängig vom Faktor Zeit. Im besten Fall das Änderungsdatum der Dateien - bzw. der Summe der Dateien. Kannst du nicht einen Hash über die Zeitstempel der letzten Änderug der Dateien auf der Platte berechnen?
(0000205)
Screeze (developer)
2014-02-07 08:10

Siehe mein 2. Kommentar: Dann wird jedes mal neu geladen, wenn auf dem Server der cache expired, auch wenn sich nix geändert hat.
(0000207)
ChristianAchatz (administrator)
2014-02-08 11:07

Da hast du Recht! Um dieses zu umgehen nutze ich in mehreren Projekten jeweils den Zeitstempel des Builds der Software. Dieser ist eindeutig für eine definierte Version. Ebenfalls eindeutig ist die Versionsnummer. Soetwas könntest du doch in einer Konfigurationsdatei definieren und dann zur Ausspielung nutzen...
(0000329)
ChristianAchatz (administrator)
2014-05-06 15:41

Postponed to 2.2 to close 2.1 soon.
(0000596)
ChristianAchatz (administrator)
2015-09-05 17:07

Moved to 3.2 to shape scope for 3.1.

- Issue History
Date Modified Username Field Change
2014-02-05 08:23 Screeze New Issue
2014-02-06 08:48 Screeze Note Added: 0000199
2014-02-06 08:54 Screeze Note Added: 0000200
2014-02-06 08:59 Screeze Note Added: 0000201
2014-02-06 21:11 ChristianAchatz Note Added: 0000202
2014-02-07 08:10 Screeze Note Added: 0000205
2014-02-08 11:07 ChristianAchatz Note Added: 0000207
2014-05-06 15:41 ChristianAchatz Note Added: 0000329
2014-05-06 15:41 ChristianAchatz Target Version 2.1 => 3.0
2015-01-28 19:12 ChristianAchatz Target Version 3.0 => 3.1
2015-09-05 17:07 ChristianAchatz Note Added: 0000596
2015-09-05 17:07 ChristianAchatz Target Version 3.1 => 3.2
2016-03-23 14:01 ChristianAchatz Target Version 3.2 => 3.3
2016-11-27 19:10 ChristianAchatz Target Version 3.3 => 3.4


Copyright © 2000 - 2017 MantisBT Team
Powered by Mantis Bugtracker