get_browser замедляет загрузку страницы, есть альтернатива?
Я использовал PHP get_browser
работаю уже довольно давно и никогда не замечал никаких задержек ни на одном из моих сайтов. Тем не менее, недавно я заметил, что один из моих сайтов загружал серверную часть примерно на секунду больше, чем нужно. Я закомментировал get_browser
Функция и страница загружаются мгновенно.
Может ли это быть связано с моим сервером или get_browser
функция известна как медленная? Этот веб-сайт является единственным веб-сайтом, который у меня работает на сервере Windows. Может ли это быть проблемой? Или это может быть связано с моим файлом browscap.ini (он обновляется каждый день с http://browsers.garykeith.com/)?
Если я ничего не могу сделать, чтобы ускорить get_browser
функция, есть ли альтернативы этому? Мне нужно надежно собрать следующую информацию о браузере:
- Что это за браузер, т.е. Chrome, IE, Safari и т. Д.
- Что это за версия (полностью), т.е. 10.1 и т. Д.
- Будь то гусеничный или бот
Я не знаю каких-либо других методов сбора этой информации от пользовательского агента, было бы лучше использовать javascript (я бы предпочел не так, как мне нужно на стороне сервера значений)?
4 ответа
Я также испытываю около 5 секунд задержки при использовании get_browser
поэтому я также искал другое решение.
То, что прекрасно работает и наверняка будет в курсе в течение длительного времени, - это библиотека в piwik:
Этот класс пригодится: http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/. Я использую его во многих своих проектах, и он не использует get_browser, вместо этого он смотрит на userragent браузера. Я обновил свою версию с помощью браузера Windows Phone, вы можете скачать ее по адресу: http://cl.ly/code/1V3E1k1G3B25.
В настоящее время полный файл browscap.ini для PHP имеет размер около 10 МБ. Один вызов get_browser() или других методов, обращающихся к этой "базе данных", требует смехотворно большого количества ресурсов.
Вот почему я изменил формат и импортировал данные в базу данных MySQL. Я написал два простых скрипта, которые позволяют мне легко обновлять базу данных при выходе нового browscap.ini. Первый сценарий генерирует структуру таблицы из файла browscap.ini - второй сценарий отправляет таблицу на стол. Если вы заинтересованы в сценариях, пожалуйста, сообщите мне в комментариях ниже, и я буду загружать их для вас. Они полны спагетти, но они работают.
Поскольку браузеры не склонны меняться во время сеанса, вы должны извлекать данные из browscap.ini только один раз за сеанс, а затем сохранять их.
Пока мне не удалось найти подходящую альтернативу get_browser
функции, и я не смог найти, почему это медленно на моем сервере Windows, а не на моем Linux.
На данный момент я буду применять базовый метод обхода файлов cookie. При первом посещении моего сайта я сохраню данные браузера в файле cookie, а затем извлекаю их с этого момента. Это быстрее, чем при использовании get_browser
функция на данный момент.
Если у кого-то есть другие решения, пожалуйста, прокомментируйте или опубликуйте их