Вопрос: Мой веб-сервер разрешает предварительную выборку?


У меня есть сайт на основе изображений, на котором размещаются несколько галерей. Когда пользователь нажимает на одно из изображений, views свойство для конкретного изображения увеличивается. Тем не менее, я заметил, что при использовании Firefox (14.0.0.1) он увеличивает количество просмотров дважды, тогда как не столь сложные браузеры, такие как K-meleon, увеличивают свойство один раз - как и должно быть.

Затем кто-то указал на stackoverflow, что, вероятно, связано с предварительной загрузкой в ​​современных браузерах, что вызывает скрипт PHP, который извлекает изображение из базы данных и увеличивает количество просмотров, которые будут выполняться дважды. Итак, проверяя apache access.log, я заметил, что Firefox действительно запрашивает каждое изображение дважды:

Firefox / 14.0.1 ":: 1 - - [03 / Aug / 2012: 16: 41: 37 +0100]" GET   /imgsite/getImg.php?id=23 HTTP / 1.1 "200 57362   "Http: //localhost/imgsite/index.php"" Mozilla / 5.0 (Windows NT   6.1; rv: 14.0) Gecko / 20100101 Firefox / 14.0.1 ":: 1 - - [03 / Aug / 2012: 16: 41: 37 +0100]" GET /imgsite/getImg.php?id=23   HTTP / 1.1 "200 57362" - "" Mozilla / 5.0 (Windows NT 6.1; rv: 14.0)   Gecko / 20100101 Firefox / 14.0.1 "

Затем я прочитал .htaccess и попробовал несколько способов блокировки заголовков предварительной выборки, которые отправляет Firefox (или хром), но не должны ли эти заголовки отображаться в приведенном выше фрагменте? До сих пор ничего не работало. Вот мой .htaccess файл, который помещается в корневой путь HTML моего сайта:

RewriteEngine On
RewriteCond %{HTTP:X-moz} prefetch
RewriteRule . . [F,L]

Я пробовал другие и более обширные варианты выше, все еще безрезультатно. Моя установка apache позволяет .htaccess по мере того как линия mod_rewrite.so включена.

Все, что я видел, и переписывать, не влияя ни на что, приводит меня к мысли, что это на самом деле не проблема.

Если бы кто-то мог пролить свет на этот вопрос, я был бы очень благодарен. Благодарю.


5
2017-08-04 11:24


Источник


Вы пытались запустить Firefox? без активированных расширений? - Michael Hampton♦
Это действительно странно. Я, конечно, видел HEAD запросить проверку / подтверждение кеширования информации, но я никогда не видел двух фактических GET запросы на тот же ресурс - Mark Henderson♦
Возможно, вы можете попробовать открыть веб-консоль firefox, чтобы узнать, что произошло на самом деле. - Sam Liao
Вы подтвердили, что ваш .htaccess на самом деле читается? Если вы добавите другое правило htaccess rewrite, оно будет обработано? - jeffatrackaid


Ответы:


Я нашел этот вопрос интересным, потому что у меня были проблемы с этим.

Согласно этому сайту Предварительная выборка подсказок есть (от Firefox в любом случае) определенный заголовок в каждом запросе (X-moz: prefetch). На этом сайте показаны способы идентификации этих заголовков и их регистрации, а также некоторые способы попытаться заставить предварительную выборку вести себя немного более дружелюбно.

По крайней мере, если вы можете получить информацию в журнале, вы можете определить, действительно ли это предзадача, вызвав вашу проблему.

Я еще ничего не пробовал с этой страницы, так что не знаю, работает ли это или нет. Я сделал закладку для некоторых будущих испытаний. Иногда бывает очень неприятно, что современные полнофункциональные браузеры будут предварительно отбирать значительную часть сайта и вызывать небольшие проблемы, такие как увеличение количества просмотров. Я признаю, что это отличная вещь, когда вы находитесь на рабочем конце веб-браузера. Что-то хорошее о щелчок и немедленное отображение всей страницы, графики и всего.

Надеюсь, эта информация может указывать на правильный путь, по крайней мере, диагностировать вашу проблему, если даже не решить ее! Удачи!


1
2017-08-07 15:01





Обратите внимание, что в ваших журналах второй запрос не имеет поля referrer. Таким образом, эти запросы не совсем идентичны. Я подозреваю, что предварительная выборка может быть проблемой здесь.

Также проверьте заголовки HTTP в файле? Если вы отправляете заголовок без кэша из-за обработки PHP, это может быть частью проблемы. Обратите внимание, что оба ответа - это 200 OK вместо ответа 304, если ваш кеш работал.

Некоторые идеи:

1) Запустите простой тест, чтобы подтвердить, что правила перезаписи htaccess являются процессами. Может быть, они игнорируются.

2) Если вы еще этого не сделали, попробуйте:

RewriteEngine On
RewriteCond %{HTTP_X_MOZ} ^prefetch$
RewriteRule ^.*$ - [F]

3) Пользовательский завиток

curl --header "X-moz: prefetch" www.google.com

Выполнение тестирования из командной строки.

Для хорошего обсуждения журнальных воздействий префекта и других элементов в журналах см .:

http://www.adrianworlddesign.com/Knowledge-Base/Zend-Framework/Helpful-Tips/Browsers-refresh-reload-your-pages


1
2017-08-07 19:35





Мои $ 0,02, не просто слепо увеличиваются на странице просмотра, это рецепт для манипуляции. Сделайте что-то на основе IP-адреса клиента / времени и убедитесь, что такие вещи, как prefetch, не вступят в силу.

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


0
2017-08-13 14:03