Запрос после "#" в 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 предоставлять вам результаты поиска без загрузки страницы, что является огромным преимуществом как для сервера, так и для клиента (сервера, потому что он не должен иметь дело с дополнительными затратами на обслуживание другой страницы; клиента, поскольку время загрузки значительно сокращается).
Для связанных #!
видит этот вопрос.