网页上的随机词每1/10秒

时间:2012-05-12 14:53:44

标签: php javascript mysql ajax web-applications

我正在为一个艺术项目开发一个基于网络(javascript)的小应用程序。这个东西叫做“诗歌生成器”,它是一个根据用户输入生成随机诗歌的剧本。

脚本必须每1/10秒向用户显示一个随机字。使用的词汇表,计数109.582字。

我已经尝试过不同的解决方案:

  1. 将所有单词放在文本文件中,并获取文本文件的随机行 - >太慢(用户必须先下载3MB文本文件才能使用该应用程序)
  2. 将所有单词放在Javascript中的数组中。 - > javascript数组显然无法处理109.585项
  3. 使用带有Javascript间隔函数的jQuery Ajax函数从数据库中提取单词 - >这个解决方案在我的localhost上测试时工作得很好,但是一旦上传到真实的web环境,这种方法就太慢了。 (我可以想象,如果我每秒向他们的服务器执行10个查询,我的托管服务提供商就不会那么开心。)
  4. 那么..有没有人知道一种不同的方法,我可以用它来每隔1/10秒在网页上显示一个随机单词?它不一定要使用php或javascript,只要它在浏览中运行,我很高兴!

    提前致谢

    Teis

3 个答案:

答案 0 :(得分:4)

没有理由你必须每十分之一秒拉一整个数据集。每分钟从数据库中提取一个合理的数量(大约600个单词),将其加载到本地javascript对象中,然后迭代它。

当数组索引变得足够高或计时器达到一分钟时,轮询另一组600.

当处理低至十分之一秒的时间时,您不希望每次都要调用服务器!您甚至可以将整个数据集加载到memcached并轮询随机单词,从而跳过昂贵的数据库调用,因为整个数据集都会加载到内存中。

答案 1 :(得分:4)

您可以尝试只将一部分单词加载到JS数组中。 也许您可以尝试从数据库中加载1000个(随机)单词并显示它们。

答案 2 :(得分:3)

只要您不需要生成疯狂的长文本,就可以将随机化分为两个步骤:

首先预先选择服务器端的一些字(让我们说 - 5000?)

然后,在客户端,使用JS从预先选择的单词中随机选择更多。

优点:无需额外要求; JS应该处理大的数组