2010-07-07 18 views
0

例如是否可以使用PHP&jSon预加载整个MyISAM数据集?

假设我们在一个类别中有1000个产品。 我们希望通过这些产品进行筛选。

当我们使用json过滤产品时。 每次我们需要运行一个单独的查询到数据库。

我们想知道是否有人知道是否有可能显示预加载的产品表。 例如预加载条:初始化搜索(0-100%)

所以整个系统只会在加载时初始化一次,那么我们希望搜索结果可以是即时的。

不幸的是调整客户服务器是不是真的我们的选择,所以希望有人在这里可以有更好的建议

提前感谢!

回答

0

在PHP端,您可以将记录预加载到类似memcache存储桶的内容中。

虽然我强烈怀疑问题在于数据库查询。 json请求需要这么长时间的可能性更大。

预加载所有值(即在一个大请求中获取它们)当然是可能的。你没有提供关于你的系统的任何细节,但它可能只是一个很大的json请求。

我看不到任何简单的方法来实现Ajax请求的进度条。也许一个简单的“加载”动画也可以。

您可能必须使用某种本地存储来保持页面之间的数据,才能使其有意义。为此,请参阅this question.

+0

对不起,我的延迟响应,有这个问题,我将无法使用memcached,或客户端存储(谷歌齿轮)。你知道我可以使用另一种方法来加快查询相对较大的查询吗?从结果中产生的JSON数据非常小,所以我不认为这是问题所在。 – AMW10 2010-07-08 17:01:47

+0

@AMW你一定要知道什么是瓶颈。JSON数据可能很小,但如果您发出一千个单一请求,则延迟将持续一段时间。在服务器端使用PHP分析器,并在浏览器端测量响应时间(使用Firebug)。如果是服务器端,请查看mySQL查询缓存 - 如果您有对服务器的根访问权限。 – Unicron 2010-07-08 18:14:12

0

1000个数据集并没有太多要查询的内容,但它是存储客户端的重要数据。然而..回答你的问题:

Javscript可以创建一个对象数组。比方说,

<script type="text/javascript"> 
var products = new Array() 
products[0] = {name:'First', price:29.99}; 
products[1] = {name:'Second', price:29.99}; 
products[2] = {name:'Third', price:29.99}; 
</script> 

...通过PHP创建这些。此外,您也可以创建功能产品(名称,价格),然后致电products[0] = new product("first", 29.99);

您可以创建功能产品(名称,价格)。当您进行此设置时,所有信息都存储在客户端浏览器中。所以现在你可以通过javascript来使用搜索/过滤器。 加载栏可以通过jquery-ui整齐地完成。搜索涉及数组循环。 如果您有多个类别可以事先分开,您可以创建不同的数组,而不是将所有内容都存储在产品数组中。

祝你好运!

+0

谢谢你的回答。 我们正在优化我们的模块。 所有处理目前通过PHP。 然后我们使用JavaScript来启用和禁用过滤器。 这是一个商业脚本,我们已经有不少客户,如果您有兴趣帮助我们优化我们的脚本,我们不用说,我们将能够为您提供免费的商业产品许可证。 我们不希望任何人在没有某种奖励的情况下与我们一起工作! 如果您有兴趣帮助我们解决此问题,请发送电子邮件给我们的支持团队[email protected] 非常感谢! – AMW10 2010-08-20 14:14:51

相关问题