Nach tiefer Suche Ich glaube, ich die Antwort gefunden:
Die pushBuilder's
Api sagt .lastModified()
:
das Datum der letzten Änderung für die bedingte Schübe verwendet werden Set.
und .etag()
:
ETAG Set für bedingte Schübe verwendet werden.
ich diese Erklärungen falsch verstanden und dachte, sind die angegebenen Werte innerhalb der PUSH_PROMISE
an den Browser gesendet, es zu helfen, zu entscheiden, ob die Datei gedrückt akzeptieren oder den Strom zu stornieren (durch RST_STREAM
Senden).
In der Tat scheinen diese Werte den Server zu sagen, wenn es etw. oder nicht. Indem ich die Datei last-modified-date
als .lastModified()
gesetzt habe, habe ich das Verhalten Simone Bordet in seinem Kommentar oben beschrieben: Ein 304 wurde gesendet, auch wenn die Datei nicht in meinem Cache vorhanden war.
Jetzt ist es völlig klar, dass es keinen Sinn macht, diese Werte festzulegen, ohne genau zu wissen, was im Cache eines Clients ist.
So etwas wie bedingte Header in einem PUSH_PROMISE
scheinen jetzt nicht zu existieren: ich nicht in Chrome Ausgabe-tracker, dass etwas über in den HTTP2-Spezifikationen und beim Lesen, fand ich Tom Bergan kommentieren diese auf einer offenen fanden (2017.01.02) Ausgabe (https://bugs.chromium.org/p/chromium/issues/detail?id=232040#c62):
... ich glaube, ein besserer Weg, um diesen Fall zu behandeln ist, die gedrückte Antwort auf ein 304 umzuwandeln, wenn die gedrückte Antwort die zwischengespeicherte Ressource entspricht. Es gibt zwei mögliche Implementierungen:
nicht abbrechen die Push erst nach der gedrückten Response-Header empfangen (da die Response-Header enthalten ETag und/oder Last-Modified). Wenn die gedrückte Ressource bereits zwischengespeichert ist, würde der Browser die gedrückte Antwort in eine 304 umwandeln und den Push abbrechen. Allerdings wartet IMO zu lange, um den Push abzubrechen.
Fügen Sie bedingte Header wie If-Match zum PUSH_PROMISE hinzu, damit der Browser genau weiß, welche Ressource übertragen wird. Dies ist eine gute Idee, aber es müsste erst spezifiziert werden, bevor wir es implementieren können. https://lists.w3.org/Archives/Public/ietf-http-wg/2016JulSep/0522.html ...
Also, was ich möglich zu erwarten (der Browser helfen, in der PUSH_PROMISE
gesendet einer zwischengespeicherten Ressource Gültigkeit zu überprüfen, indem Sie einige Kopf Auslesen von Informationen) ist jetzt nicht möglich, aber wird es sein. Außerdem scheint es, dass cache-digest
in Browsern in der Zukunft implementiert wird, was noch effektiver sein wird, weil unnötige Pushs auf dem Server vermieden werden können. Chrome arbeitet bereits daran, wie hier zu sehen ist: https://docs.google.com/document/d/1HhmyzKUPuWcCs8wG_GLSu3mvptygXtO2mBl5xlmEB-4/edit#
Bitte korrigieren Sie mich, wenn ich etwas falsches gesagt habe.
Ok, es gibt also nichts innerhalb des 'PUSH_PROMISE' (außer dem URI der Datei), das dem Browser helfen kann, zu entscheiden, ob er einen Push akzeptieren oder abbrechen will? –