3

我已经使用 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 会更好(我宁愿不需要值服务器端)?

4

4 回答 4

6

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

piwik 中的一个库很有效,并且肯定会在很长一段时间内保持最新状态:

于 2014-07-15T15:01:32.860 回答
0

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

于 2012-08-22T07:17:28.107 回答
0

到目前为止,我还没有设法找到该get_browser功能的合适替代方案,也无法找到为什么它在我的 Windows 服务器上而不是在我的 Linux 上很慢。

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

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

于 2012-08-22T11:08:28.827 回答
0

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

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

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

于 2014-04-25T10:01:57.337 回答