3

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

该脚本必须每 1/10 秒向用户显示一个随机单词。使用的词表有 109.582 个词。

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

  1. 将所有单词放在一个文本文件中,并获得文本文件的随机行 -> 太慢(用户必须下载 3MB 的文本文件才能使用该应用程序)
  2. 将所有单词放在 Javascript 中的数组中。-> javascript 数组显然无法处理 109.585 个项目
  3. 使用带有 Javascript 间隔函数的 jQuery 的 Ajax 函数从数据库中提取单词 -> 这个解决方案在我的本地主机上测试时效果很好,但是一旦上传到真实的 Web 环境,这种方法被证明太慢了。(而且我可以想象,如果我每秒对他们的服务器执行 10 个查询,我的托管服务提供商不会那么高兴。)

所以.. 有没有人知道我可以用另一种方法在网页上每 1/10 秒显示一个随机单词?它不一定必须使用 php 或 javascript,只要它在浏览器中运行,我很高兴!

提前致谢

泰斯

4

3 回答 3

4

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

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

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

于 2012-05-12T14:57:03.903 回答
4

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

于 2012-05-12T14:57:51.703 回答
3

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

首先预选一些服务器端的词(比如说——5000?)

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

优点:不需要额外的请求;JS 应该处理那么大的数组

于 2012-05-12T14:58:00.657 回答