一个用 PHP 或 JavaScript 处理的大型数组


A large array to be handled in PHP or JavaScript

我手头有一个大数组(2300 个元素,总共 280 KB,最短形式为 180 KB)。我需要在PHP或JavaScript中处理它,而无需加载太多页面或服务器。页面中有一个自动完成字段,我不希望它每次用户键入字母时都向 180 KB 页面发送请求(因为这对我来说似乎效率非常低)。我不想将所有这些存储在原始页面中,因为它会减慢页面速度(不是吗?

我试图将其推入 Cookie 中,但似乎 Cookie 中没有空间容纳如此庞大的数组。有什么建议吗?也许在数据库中搜索是更好的解决方案,我应该将它们存储在数据库中?

您想使用仅加载一个列表自动完成?将其存储在 JavaScript 文件中并设置正确的缓存标头,以便客户端只加载列表一次。

不要将其设置为cookie,那只是胡说八道。

我相信实际上最好通过 Ajax 将输入发送到服务器并等待服务器端回复 如果您担心页面加载时间 + 如果您的数组不时更改...

另一方面,您可以将数组以JSON格式存储在服务器上的fie中,并通过Ajax在JavaScript中发布它,这样您的用户将不得不下载一次数组,然后您可以依靠浏览器缓存来加快速度。

例如。

$.get("array.txt",function(array){
   var myArray = eval(array);
   //Now DO WHat YOu WAnt with the Array now Housed in the variable 'myArray'
});

这只是一个例子,你不应该使用jQuery。

注意:-

如果使用第二种方法...最好添加某种缓冲区 机制,以便您的用户等待它首次加载 用户在其当前会话中访问该站点。这只是为了 用户在第一次尝试时就能得到他们期望的东西,否则他们可能不会看到 任何建议或您想对数组执行的任何操作 他们会感到恼火并最终离开。

如果使用 PHP,则需要设置正确的缓存标头。通常 您上传一次且永不更改的 txt 文件将自动成为 发送到大多数现代浏览器中的缓存。

对自动完成字段使用数据库确实是一种经典的解决方案。我认为你不会很难找到一个PHP/mysql/jquery自动完成教程。

效果很好。

永远不要向客户端发送完整列表,这是无用的,并且当您的值数量增加时,此解决方案将无法扩展。