2016-08-18 5 views
1

Итак, в одном из моих проектов мне нужно создать кеш-память http, чтобы обрабатывать несколько вызовов API на сервер. Я читал об этом заголовок ETag, который можно использовать с условным GET, чтобы минимизировать нагрузку на сервер и вводить в действие кеширование. Однако у меня возникла проблема с созданием E-Tag. Я могу использовать LAST_UPDATED_TIMESTAMP ресурса в качестве ETag или hash it используя какой-то хэширующий альго, как MD5. но что было бы лучшим способом сделать это? Есть ли какие-либо недостатки в использовании raw timestamp как Etag ??Каков наилучший способ генерации ETag на основе метки времени ресурса

любой вспомогательный ответ очень ценится .. Спасибо заранее .... Приветствия!

ответ

1

Если ваша метка времени имеет достаточную точность, поэтому вы можете гарантировать ее изменение в любое время, когда ресурс изменяется, тогда вы можете использовать кодировку метки времени (значение заголовка должно быть ascii).

Но имейте в виду, что ETag может не спасти вас много. Это всего лишь заголовок повторной проверки кеша, так что вы все равно получите столько запросов от клиентов, только некоторые из них будут условными, и тогда вы сможете избежать отправки полезной нагрузки, если ETag не изменился, но вы все равно понесете некоторую работу полагая, что это (возможно, куча меньше работы, так что может стоить того).

Фактически несколько версий IIS использовали временную метку файла для создания Etag. Мы справились с этим, создав модуль кеша WinGate, когда целая куча файлов с одинаковой временной таблицей оказалась с одним и тем же Etag, и мы узнали, что Etag действителен только в контексте URI запроса.

+0

Не могли бы вы объяснить, что Etag действителен в контексте URI? Как вы столкнулись с столкновениями? Не должен ли каждый файл иметь другой URI? – otterslide

+0

2 разных URI могут иметь одинаковое значение ETag. Очевидно, что это разные ресурсы. Например, вы не можете использовать ETag. Ранние версии IIS использовали дату изменения файла для генерации ETag, поэтому, если вы скопировали кучу файлов в папку и получили ту же дату, то они могли (и я ее видел) в конечном итоге с тем же ETag испускаемых IIS. – Adrien

+0

Хорошо, я думаю, вы говорите, что ETags должен быть уникальным для всех ресурсов в домене, потому что URL-адрес URI/URL не учитывается браузером? – otterslide

 Смежные вопросы

  • Нет связанных вопросов^_^