Можно ли перенаправить файлы, отличные от HTML, с помощью HTTP? И цепочка перенаправлений?

Я думал об аккуратном способе балансировки нагрузки, и одна вещь, которая потребуется, - это иметь возможность загружать изображение на HTML-страницу из нескольких мест без перезаписи URL-адреса (при каждой загрузке)

Итак, что мне нужно сделать, это иметь один URL-адрес, который является «статическим» URL-адресом. Например, http://example.com/myimage.png Изображение на самом деле не содержится в example.com. Таким образом, example.com выполняет HTTP-ответ 302, 301 или 307, чтобы вызвать перенаправление на 2.example.com. Как браузеры справляются с такими изображениями, как в этой ситуации? Кроме того, как браузеры обрабатывают множественные перенаправления, например, если 2.example.com также не содержит его, и он переходит на 3.example.com? (Обратите внимание, я спрашиваю об этом, потому что я никогда не видел перенаправления 301 на что-либо, кроме HTML-страницы)

Кроме того, какой код состояния лучше всего использовать. 301 означает «перемещено навсегда», и это «перемещение» не является постоянным, поэтому я не хочу, чтобы оно кэшировалось. Должен ли я использовать 307? Поддерживается ли это поисковыми системами и современными браузерами?


person Earlz    schedule 19.03.2010    source источник


Ответы (3)


Перенаправление — это концепция HTTP, которая применяется к любому ресурсу, который может быть доставлен по HTTP, а не только к HTML. Цепочки перенаправлений и перенаправления не-HTML прекрасно работают в большинстве современных браузеров.

Если вы хотите временно перенаправить, используйте 302, если вы не хотите также перенаправлять POST и PUT. Проблема в том, что большинство реализаций выдают GET для нового адреса ресурса после POST или PUT, которые получили 302.

Обратите внимание, что 303 и 307 специфичны для HTTP 1.1.

person Franci Penov    schedule 19.03.2010
comment
Да, но поддерживается ли это современными браузерами и поисковыми роботами? - person Earlz; 19.03.2010
comment
Да, это поддерживается обоими. - person ceejayoz; 19.03.2010

Я бы не советовал балансировать нагрузку таким образом. Балансировка нагрузки — это не то, для чего предназначены ответы 3xx.

Протокол HTTP имеет возможности кэширования, которые могут помочь снизить нагрузку на сервер. Существуют также серверные технологии для балансировки нагрузки. Эти хорошо разработанные технологии будут более стабильными и пригодными для повторного использования.

person Benedict Cohen    schedule 19.03.2010
comment
балансировка нагрузки - это всего лишь одна из моих идей. Я просто хочу поэкспериментировать.. (например, я не запускаю это в производство или что-то в этом роде) - person Earlz; 19.03.2010

Как говорит Бенедикт С., я думаю, вы лаете не по тому дереву.

Если вы хотите сделать балансировку нагрузки, сделайте балансировку нагрузки. Циклический DNS — самый простой метод (и во многих отношениях более эффективный, чем более дорогие решения). Если вы должны попытаться сбалансировать нагрузку между серверами с разными полными доменными именами, сгенерируйте URL-адрес на стороне клиента в javascript.

Остатки вашего поста применимы и к другим вопросам о переадресации. О SEO опубликовано много плохих советов. Google владеет примерно 92% мирового рынка и публикует довольно подробные спецификации о том, как они сканируют и ранжируют сайты. Перенаправление внутри вашего домена не должно влиять на ваш рейтинг в любой компетентной поисковой системе. Перенаправление за пределы вашего домена только улучшит рейтинг цели.

Да, браузеры реализуют ограничение на количество перенаправлений для одного запроса, но оно зависит от браузера.

person symcbean    schedule 24.03.2010