Каковы допустимые значения для заголовка http pragma
. Я знаю, что no-cache
- это один, но я хочу включить кеширование, чтобы я его установил. Я сделал некоторые googleing, и все, что я получил, было большинство клиентов игнорировать это, но нет информации о других значениях, которые он принимает.
Каковы допустимые значения для http Pragma
Ответ 1
Удивительно, что по умолчанию установлен только один параметр, который не является кешем, и никакие новые директивы Pragma не будут определены в HTTP в соответствии с RFC.
ref: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32
Кроме того, вам нужно будет использовать заголовок Cache-Control для управления поведениями кэширования, а не директиву Pragma, которая по-прежнему включена только для поддержки устаревшего HTTP/1.0.
ref: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9
Ответ 2
Вероятно, вы ищете Cache-Control, это поддерживается в HTTP/1.1 и определяет больше состояний, чем Pragma.
Ответ 3
Дополнительная информация, которая может помочь некоторым людям, которые менее заинтересованы в кешировании, и больше интересуется заголовками http в целом. т.е. буквальная интерпретация исходного вопроса, "каковы допустимые значения для заголовка http-заголовка"?
Ссылка в принятом ответе (fooobar.com/info/523695/...) - это RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32. Он определяет snytax как:
Pragma = "Pragma" ":" 1 # прагма-директива
pragma-directive = "no-cache" | расширение-прагма
extension-pragma = токен [ "=" (токен | кавычка)]
Это означает, что любая пара "токенов = значение" допустима (при этом значение является необязательным). Спектр продолжает говорить
Никакие новые директивы Pragma не будут определены в HTTP.
и я предполагаю, что это также предназначено для покрытия части "расширение-прагма", но я бы хотел, чтобы они были более однозначными здесь.
Этот заголовок не создается специально для кэширования; в описании RFC говорится:
Поле общего заголовка Pragma используется для включения функций, конкретные директивы, которые могут применяться к любому получателю по цепь запроса/ответа
Итак, в теории вы могли бы добавить что-то здесь, и они могли бы работать. Однако, несмотря на многочисленные поиски, я не нашел ссылки на любые другие ценности, которые когда-либо использовались здесь. Это действительно мертвая и неловкая часть http/1.
Кажется, что нормальная вещь:
-
Используйте только прагма с флагом no-cache. Это единственное значение, которое когда-либо нужно использовать. (И, конечно, вы также должны использовать заголовок управления кешем для вашего кэширования, чтобы вести себя так, как ожидалось).
-
Если вы хотите поместить некоторую специальную информацию в заголовок http - то есть, если вы хотите "включить директивы для конкретной реализации, которые могут применяться к любому получателю в цепочке запросов/ответов", затем создайте собственный HTTP-заголовок, Например, Google и Amazon делают следующее: http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html и https://cloud.google.com/storage/docs/reference-headers
Обратите внимание на соглашение об именах в заголовке http. Префикс "x-" устарел http://tools.ietf.org/html/rfc6648, но все, похоже, используют его в любом случае.