get_browser减慢页面加载,任何替代?

时间:2012-08-22 06:46:29

标签: php javascript user-agent browser-detection browscap

我已经使用PHP的get_browser功能已经有一段时间了,并且从未真正注意到我的任何网站上的任何延迟。但是,最近我注意到我的一个站点在服务器端加载的时间超过了它应该花费的时间。我注释掉了get_browser函数和即时加载的页面。

这可能与我的服务器有关,还是get_browser函数已知很慢?该网站是我在Windows服务器上运行的唯一网站,这可能是问题吗?或者这可能与我的browscap.ini文件有关(这是每天从http://browsers.garykeith.com更新的)?

如果我无法加速get_browser功能,那还有其他选择吗?我需要可靠地收集有关浏览器的以下信息:

  1. 它是什么浏览器,即Chrome,IE,Safari等
  2. 它是什么版本(完整版),即10.1等
  3. 无论是爬虫还是机器人
  4. 我不知道从用户代理收集此信息的任何其他方法,使用javascript会更好吗(我不想因为我需要值服务器端)?

4 个答案:

答案 0 :(得分:4)

使用get_browser时我也经历了大约5秒的延迟,所以我也寻找另一种解决方案。

什么效果很好并且肯定会长期保持最新状态是piwik中的lib:

答案 1 :(得分:0)

这门课会派上用场:http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/。我在我的许多项目中使用它并且它不使用get_browser,而是查看浏览器的useragent。我已使用Windows Phone浏览器更新了我的版本,您可以在http://cl.ly/code/1V3E1k1G3B25下载。

答案 2 :(得分:0)

到目前为止,我还没有设法找到get_browser函数的合适替代方法,也无法找到为什么它在我的Windows服务器上而不是在我的Linux上运行缓慢。

目前我将应用基本的Cookie解决方法。在第一次访问我的网站时,我会将浏览器详细信息存储在cookie中,然后从此开始检索这些内容。这比目前使用get_browser函数更快。

如果其他人有任何其他解决方案,请发表评论或发布

答案 3 :(得分:0)

目前,PHP的完整browscap.ini大小约为10MB。对get_browser()或访问该“数据库”的其他方法的单次调用需要非常多的资源。

这就是我改变格式并将数据导入MySQL数据库的原因。我编写了两个简单的脚本,允许我在新的browscap.ini出来时轻松更新数据库。第一个脚本从browscap.ini文件生成表结构 - 第二个脚本为表生成种子。 如果您对这些脚本感兴趣,请在下面的评论中告诉我,我会为您上传它们。 他们充满意大利面,但他们工作。

由于浏览器在会话期间不会发生变化,因此您应该每次只从browscap.ini获取一次数据,然后存储它。