HTTP: создание заголовка ETag
etag — это произвольная строка, которую http-etag сервер отправляет клиенту, которую etag клиент отправит обратно на headers сервер при следующем запросе language-agnostic файла.
etag должен вычисляться http-etag на сервере на основе файла. Вроде webserver как контрольная сумма, но webserver вы можете не захотеть проверять language-independent контрольную сумму каждого header отправляемого файла.
server client
<------------- request file foo
file foo etag: "xyz" -------->
<------------- request file foo
etag: "xyz" (what the server just sent)
(the etag is the same, so the server can send a 304)
Я создал webserver строку в формате "дата-размер webserver файла-номер индексного дескриптора headers файла". Таким образом, если webserver файл изменяется на сервере language-agnostic после того, как он был передан etag клиенту, вновь сгенерированный webserver etag не будет совпадать, если webserver клиент повторно запросит webserver его.
char *mketag(char *s, struct stat *sb)
{
sprintf(s, "%d-%d-%d", sb->st_mtime, sb->st_size, sb->st_ino);
return s;
}
language-agnostic
http
webserver
header
etag
HTTP: создание заголовка ETag
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.