get_browser降低页面加载速度,任何其他选择


get_browser slowing down page load, any alternative?

我已经使用PHP的get_browser函数很长一段时间了,从来没有真正注意到我的任何网站上有任何滞后。然而,最近我注意到我的一个网站在服务器端加载的时间比它应该加载的时间多了一秒钟左右。我注释掉了get_browser函数,页面立即加载。

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

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

  1. 它是什么浏览器,即Chrome、IE、Safari等
  2. 它是什么版本(完整版),即10.1等
  3. 无论是爬虫还是机器人

我不知道有任何其他方法可以从用户代理收集这些信息,使用javascript会更好吗(我宁愿不使用javascript,因为我需要值服务器端)?

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

什么工作得很好,肯定会在很长一段时间内是最新的是piwik中的一个库:

  • Piwik设备检测器

此类将派上用场:http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/.我在很多项目中都使用它,它不使用get_browser,而是查看浏览器的用户代理。我已使用Windows Phone浏览器更新了我的版本,您可以在以下位置下载:http://cl.ly/code/1V3E1k1G3B25.

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

目前,我将应用一个基本的cookie变通方法。第一次访问我的网站时,我会将浏览器的详细信息存储在cookie中,然后从那时起检索这些信息。这比目前使用get_browser函数更快。

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

目前,用于PHP的完整browscap.ini的大小约为10MB。对get_browser()或其他方法的一次调用访问该"数据库"需要大量的资源。

这就是我更改格式并将数据导入MySQL数据库的原因。我写了两个简单的脚本,使我能够在新的browscap.ini出现时轻松地更新数据库。第一个脚本从browscap.ini文件生成表结构,第二个脚本为表播种。如果你对剧本感兴趣,请在下面的评论中告诉我,我会帮你上传。他们满是意大利面条,但他们工作。

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