0

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

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

4

3 回答 3

1

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

另一方面,您可以将数组以 JSON 格式存储在服务器上的文件中,并通过 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 文件将自动发送到大多数现代浏览器中的缓存。

于 2012-07-06T09:01:09.167 回答
1

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

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

于 2012-07-06T08:55:00.267 回答
0

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

它工作得很好。

永远不要向客户发送完整的列表,它是无用的,而且当你的值数量增加时,这个解决方案也不会扩展。

于 2012-07-06T08:55:58.983 回答