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

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

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

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

Firefox / 14.0.1 ":: 1 - - [03 / августа / 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 / августа / 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 (или Chrome), но разве эти заголовки не должны отображаться в приведенном выше фрагменте? Пока ничего не помогло. Вот мой файл .htaccess, который находится в корневом HTML-пути моего веб-сайта:

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

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

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

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

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

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

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

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

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

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

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

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

Сделать тестирование из командной строки.

Подробное обсуждение влияния префекта и других элементов журнала на журналы см.

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

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

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

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

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

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

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

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