aboutsummaryrefslogtreecommitdiff
path: root/files/ru/glossary/cacheable/index.html
blob: 2bb6eed6a59f74417fd544429a11dfdba136a559 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
---
title: Кэшируемые методы
slug: Glossary/cacheable
tags:
  - Glossary
  - HTTP
translation_of: Glossary/cacheable
original_slug: Словарь/cacheable
---
<p><strong>Кэшируемые</strong> ответы - это HTTP-ответы, которые могут быть закешированы, то есть сохранены для дальнейшего восстановления и использования позже, тем самым снижая число запросов к серверу. Не все HTTP-ответы могут быть закешированы. Вот несколько ограничений:</p>

<ul>
 <li>Метод, используемый в запросе, кэшируемый, если это {{HTTPMethod("GET")}} или {{HTTPMethod("HEAD")}}. Ответ для {{HTTPMethod("POST")}} или {{HTTPMethod("PATCH")}} запросов может также быть закеширован, если указан признак "свежести" данных и установлен заголовок {{HTTPHeader("Content-Location")}}, но это редко реализуется. (Например, Firefox не поддерживает это согласно https://bugzilla.mozilla.org/show_bug.cgi?id=109553.) Другие методы, такие как {{HTTPMethod("PUT")}} и {{HTTPMethod("DELETE")}} не кэшируемые, и результат их выполнения не кэшируется.</li>
 <li>Коды ответа, известные системе кэширования, которые рассматриваются как кэшируемые: {{HTTPStatus("200")}}, {{HTTPStatus("203")}}, {{HTTPStatus("204")}}, {{HTTPStatus("206")}}, {{HTTPStatus("300")}}, {{HTTPStatus("301")}}, {{HTTPStatus("404")}}, {{HTTPStatus("405")}}, {{HTTPStatus("410")}}, {{HTTPStatus("414")}}, {{HTTPStatus("501")}}.</li>
 <li>Отсутствуют специальные заголовки в ответе, которые предотвращают кэширование: например, {{HTTPHeader("Cache-Control")}}.</li>
</ul>

<p>Обратите внимание, что некоторые некэшируемые запросы-ответы к определённым URI могут сделать недействительным (инвалидируют) предыдущие закешированные ответы на тех же URI. Например, {{HTTPMethod("PUT")}} к странице pageX.html инвалидируют все закешированные ответы {{HTTPMethod("GET")}} или {{HTTPMethod("HEAD")}} запросов к этой странице.</p>

<p>Когда и метод запроса и статус ответа кэшированы, то ответ к запросу тоже может быть закеширован:</p>

<pre>GET /pageX.html HTTP/1.1
(…)

200 OK
(…)
</pre>

<p>Запрос {{HTTPMethod("PUT")}} не может быть закеширован. Более того, он инвалидирует закешированные данные запросов к тому же URI, сделанных через {{HTTPMethod("HEAD")}} или {{HTTPMethod("GET")}}:</p>

<pre>PUT /pageX.html HTTP/1.1
(…)

200 OK
(…)
</pre>

<p>Специальный заголовок {{HTTPHeader("Cache-Control")}} в ответе может предотвратить кэширование:</p>

<pre>GET /pageX.html HTTP/1.1
(…)

200 OK
Cache-Control: no-cache
(…)</pre>

<h2 id="Материалы_для_изучения">Материалы для изучения</h2>

<h3 id="Основные">Основные</h3>

<ul>
 <li>Определение <a href="https://tools.ietf.org/html/rfc7231#section-4.2.3">кэшируемых методов</a> в спецификации HTTP.</li>
</ul>

<h3 id="Технические">Технические</h3>

<ul>
 <li>Описание общих кэшируемых методов: {{HTTPMethod("GET")}}, {{HTTPMethod("HEAD")}}</li>
 <li>Описание общих некэшируемых методов: {{HTTPMethod("PUT")}}, {{HTTPMethod("DELETE")}}, often {{HTTPMethod("POST")}}</li>
</ul>