Назад | Перейти на главную страницу

Как отличить «предварительно загруженные» запросы страницы от обычных запросов?

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

Плагин Firefox, Fasterfox, и Google Web Accelerator (похоже, больше не доступен для загрузки) - вот два таких плагина, о которых я знаю.

Отличаются ли такие запросы в журнале событий Apache от обычных запросов страниц?

В запросах предварительной выборки Firefox HTTP-заголовок X-moz установлен следующим образом

'X-moz: prefetch'

Таким образом, вы можете идентифицировать предварительную выборку из сценария CGI или аналогичного, но не из файла журнала apache в формате журнала по умолчанию. Если вы определяете собственный формат файла журнала, вы можете включить содержимое заголовка X-moz, где он присутствует:

%...{X-moz}i

Итак, изменив формат журнала по умолчанию, чтобы включить его в конец строк журнала:

LogFormat "%h %l %u %t \"%r\" %>s %b %{X-moz}i"

Существует некоторая работа по стандартизации предварительной выборки в HTML5, но в настоящее время в черновике HTML5 нет ничего, что требовало бы или предлагало UA идентифицировать такие запросы к серверу.

Дополнительную информацию см. В разделе часто задаваемых вопросов разработчика Mozilla по предварительной выборке:

https://developer.mozilla.org/en/Link_prefetching_FAQ

Поскольку они, вероятно, будут использовать тот же пользовательский агент, что и обычные запросы страниц, это будет сложно сделать. Вы могли бы написать что-нибудь, чтобы различать это по шаблонам времени - запрос одной страницы, за которым следует волна запросов для других страниц, быстрее, чем человек может запросить. Однако вы, вероятно, получите много ложных срабатываний.