2011-09-10 13 views
10

Jakie są prawidłowe wartości dla nagłówka http pragma. Wiem, że no-cache jest jednym z nich, ale chcę włączyć buforowanie, więc co powinienem ustawić. Zrobiłem trochę googleingu i wszystko co mam, to większość klientów ignoruje to, ale nie ma informacji o innych wartościach, które akceptuje.Jakie są prawidłowe wartości dla http Pragma

Odpowiedz

11

Co zaskakujące, domyślnie zdefiniowany jest tylko jeden parametr, który nie jest buforowany, a nowe dyrektywy Pragma nie będą zdefiniowane w protokole HTTP zgodnie z RFC.

ref: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32

Co więcej, trzeba będzie użyć Cache-Control nagłówek za zarządzanie zachowań buforowania zamiast dyrektywy Pragma, która wydaje się być nadal włączone jedynie w celu wspierania HTTP starszych/1.0.

ref: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9

Bonus: http://www.mnot.net/cache_docs/

+0

dzięki za link bonusowy – aWebDeveloper

1

Więcej informacji, które mogą pomóc niektórym osobom, które są mniej zainteresowane buforowaniem, i bardziej zainteresowane nagłówkami HTTP w ogóle. tj. dosłowna interpretacja pierwotnego pytania "jakie są prawidłowe wartości dla nagłówka http?"

Odwołanie w zaakceptowanej odpowiedzi (https://stackoverflow.com/a/7376516/3246928) to RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32. Definiuje snytax jak:

Pragma = "Pragma" ":" 1 # pragma-dyrektywa

Pragma dyrektywą = "no-cache" | Rozszerzenie-Pragma

przedłużenie-Pragma = token [ "=" (znak | quoted-string)]

Ten implikuje, że każda 'znacznik = wartość' para jest do przyjęcia (z wartością jest opcjonalny). Specyfikacja mówi:

Żadne nowe dyrektywy Pragma nie zostaną zdefiniowane w protokole HTTP.

i chciałbym odgadnąć ten jest również przeznaczona na pokrycie „extension-PRAGMA” część, ale szkoda, że ​​nie było tu bardziej jednoznaczne.

Ten nagłówek ma numer , a nie wydaje się być specjalnie stworzony do buforowania; opis w dokumencie RFC mówi:

Pole ogólnego nagłówka Pragma służy do włączenia implementation- konkretnych dyrektyw, które mogą odnosić się do każdego odbiorcy w łańcuchu żądanie/odpowiedź

Tak więc, w teoria, możesz dodać tutaj rzeczy i mogą one działać. Jednak pomimo wielu poszukiwań, nie znalazłem żadnego odniesienia do jakichkolwiek innych wartości, które kiedykolwiek były tutaj używane. Jest to faktycznie martwa i żenująca część http/1.

Wydaje się, że normalną rzeczą do zrobienia jest:

  • używać tylko Pragma z flagą no-cache. Jest to jedyna wartość, jakiej każdy powinien kiedykolwiek użyć. (Oczywiście, powinieneś również użyć nagłówka kontrolki pamięci podręcznej, aby cache zachowywał się zgodnie z oczekiwaniami).

  • Jeśli chcesz umieścić specjalne informacje w nagłówku http - np. Jeśli chcesz "uwzględnić dyrektywy dotyczące konkretnych implementacji, które mogą dotyczyć dowolnego adresata w łańcuchu żądania/odpowiedzi", utwórz niestandardowy nagłówek http. Na przykład Google i Amazon wykonują to: http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html i https://cloud.google.com/storage/docs/reference-headers
    Należy zwrócić uwagę na konwencję nazewnictwa w nagłówku http. Prefiks "x-" jest przestarzały przez http://tools.ietf.org/html/rfc6648, ale wydaje się, że wszyscy go używają.

Powiązane problemy