Запрос после "#" в https://www.google.co.in/#q=better+flight+search

URL-адрес следует следующей схеме

scheme://domain:port/path?query_string#fragment_id

но поиск строки

лучший поиск авиабилетов

результат в следующем URL

https://www.google.co.in/#q=better+flight+search

по схеме URL # сопровождается фрагментом. Поправьте меня, если я ошибаюсь, но фрагменты не отправляются на сервер, тогда как Google показывает результаты поиска.

1 ответ

Решение

Как вы поняли, фрагмент фрагмента URL не отправляется на сервер в HTTP-запросе. Вместо этого он используется браузером локально для маркировки мест в документе. Некоторые клиентские инфраструктуры используют этот факт и используют фрагмент в качестве вторичной строки запроса.

Так, например, в вашем примере с Google, поиск по странице Google заставляет страницу переходить к фрагменту, подобному #q=better+flight+search, Браузер видит изменение и уведомляет javascript страницы о том, что URL был изменен. Так как URL минус фрагмент одинаков, браузер не выполняет запрос к серверу. В этом случае javascript страницы видит изменение фрагмента и использует его для выполнения Ajax-запроса для получения результатов поиска. Это позволяет Google предоставлять вам результаты поиска без загрузки страницы, что является огромным преимуществом как для сервера, так и для клиента (сервера, потому что он не должен иметь дело с дополнительными затратами на обслуживание другой страницы; клиента, поскольку время загрузки значительно сокращается).

Для связанных #! видит этот вопрос.

Другие вопросы по тегам