HTTP: создание заголовка ETag
etag — это произвольная строка, которую language-agnostic сервер отправляет клиенту, которую http-etag клиент отправит обратно на headers сервер при следующем запросе http файла.
etag должен вычисляться webserver на сервере на основе файла. Вроде headers как контрольная сумма, но headers вы можете не захотеть проверять http-etag контрольную сумму каждого http отправляемого файла.
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)
Я создал http-etag строку в формате "дата-размер http-etag файла-номер индексного дескриптора http файла". Таким образом, если headers файл изменяется на сервере http-etag после того, как он был передан etag клиенту, вновь сгенерированный webserver etag не будет совпадать, если header клиент повторно запросит http-etag его.
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, нажмите здесь.