在我的firefox扩展中实现分析?

时间:2011-10-18 19:16:02

标签: firefox firefox-addon xul

我想收集有关用户如何使用我的扩展程序的信息。我想的是,当用户与我的扩展程序交互到配置文件文件夹中的本地文件时,我将写入信息(时间,数据收集)。我会定期将该文件发送到服务器。

这是我正在尝试的正确方法吗?这会导致性能下降吗?

有没有更好的方法呢?

2 个答案:

答案 0 :(得分:3)

您需要考虑的事项:磁盘I / O可能需要不可忽略的时间,例如:如果磁盘正忙或用户的配置文件位于网络位置。因此,打开文件,向其中写入一行数据并再次关闭文件的明显方法确实会降低性能,因为在写入文件时浏览器UI被阻止。您的选择是:

  • 打开文件一次,使用nsIBufferedOutputStream和足够大的缓冲区。这将导致只有少数写操作会触发写入磁盘。缺点:您仍然经常进行同步写入操作,如果浏览器崩溃,缓冲区内容将不会写入磁盘 - 您的文件已损坏。
  • 使用NetUtil.asyncCopy()异步写入数据,而不会阻止所有内容。文档中的代码示例显示了如何使用nsIStringInputStream编写字符串。缺点:这可能不是非常有效的内存,需要为每个写操作创建一些XPCOM对象。
  • 使用SQLite database,即使浏览器崩溃,它也会为您提供异步API并确保一致性。如果你只打开一次数据库连接然后立即写入它,那么它应该比上面的解决方案更有效(但我没有测试)。缺点:您的结果是数据库文件而不是纯文本文件,您必须在发送到服务器之前将其转换,或者服务器需要处理SQLite数据库(这可能比读取文本文件更复杂)。 LI>

答案 1 :(得分:1)

我认为这种态度没有任何问题,绝对比以小块方式臭名昭着更好。

但是你应该非常清楚地写下你想要发送那些数据(并且在用户安装附加组件后可能会显示一个带有一些信息的新标签页),因为有些用户不喜欢被发现。

您可以使用XMLHttpRequest发送数据(请参阅here)。