Здравствуйте, okman, Вы писали:
А вы можете всё-таки ответить что вы понимаете под бэкэндом и фронтэндом?
И кто всё-таки обрабатывает Conditional GET?
Код 404 означает, что не найден некий объект, в отношении которого мы совершаем какое-то запрашиваемое действие. При этом в зависимости от типа запрашиваемого объекта не найденным может быть как фотография, так и бутылка водки. Мы сами знаем что мы запрашиваем, поэтому у нас не составляет труда понять чего именно не найдено.
Например, мы сделали веб-сервис, который управляет роботом, способным брать бутылки водки из хранилища и отправлять их нам пневмопочтой. Если сегодня пятница и мы хотим напиться, мы выполняем запрос к такому веб-серверу по протоколу HTTP. Запрос мог бы выглядеть, скажем, так:
PUSH /погреб/секция_B/стеллаж_2/ячейка_239 HTTP/1.1
Host: pneumo-vodka.local
Transport: pneumo-post
На наш запрос робот идёт в подвал, ищет там нужную ячейку. Всё это время веб-сервер держит соединение и мы видем в строке статуса браузера "Waiting response...". Наконец, робот находит ячейку, но обнаруживает её пустой, он говорит об этом серверу и сервер отправляет нам ответ вида:
HTTP/1.1 404 Not Found
Expires: Mon, 22 Oct 2012 05:00:00 GMT
Из чего мы понимаем, что мы ошиблись с местом -- по указанному URI бутылки водки нет. Повторять этот запрос снова, пожалуй, смысла нет, т.к. вряд ли на этом месте бутылка быстро появится. В заголовке Expires указано время утро понедельника, когда будет очередной завоз бутылок и когда самое раннее в этом месте бутылка может появиться. До этого момента данный ответ могут спокойно кэшировать браузеры и прокси. Если мы запросим снова до момента, указанного в Expires, то ответ может быть взят из кэша, сервер его даже не увидит, но для нас это нормально. Если же после, то кэш не будет использоваться, запрос будет обработан сервером, а там либо снова 404, либо 200 OK (бутылка отправлена).