尽管有索引,但网页加载缓慢 ajax 查询检索时间过长

Posted

技术标签:

【中文标题】尽管有索引,但网页加载缓慢 ajax 查询检索时间过长【英文标题】:Webpage slow to load ajax query took too long to retrieve despite index 【发布时间】:2016-11-01 10:19:01 【问题描述】:

所以我有一个包含表格中所有行的网页。 这张表只有 atm 最多说一千行。无论如何,加载整个页面至少需要 7-8 秒,这是不可接受的。

我目前的解决方案是:

1) 使用播放框架缓存在服务器端缓存表。

2) 通过将表格放在单独的 html 页面中,在客户端缓存表格,使用 htaccess,并将其加载到 iframe 上。

3) 部分加载或在用户请求之前不加载表。据我所知,我们的大多数用户无论如何都使用搜索栏来过滤表格,那么加载整个表格有什么意义。但话又说回来,我不能代表所有人。

我正在使用播放框架 1 和休眠。

我尝试通过仅选择所需字段而不是返回所有字段 (hibernate.findAll) 来重写查询,但这似乎并没有缩短加载时间。

我使用了播放缓存,加载时间减半,但我读到一些反对缓存的论坛条目说它们很难管理。

有什么建议吗?

【问题讨论】:

你说“网页加载”很慢。但假设问题出在数据库中。在得出这样的结论之前,您是否浏览过整个系统流程?我的意思是,“网页加载”是由各种变量确定的,例如:a)在浏览器/网络之间完成的 http 请求; b) 网页html/css/js代码渲染; c) 客户端/服务器之间完成的请求/连接; d) 网络延迟...等等。另外,如果您 100% 确定问题出在数据库中,请提供您的查询的 EXPLAIN ANALYZE 结果。 该页面花费了几毫秒来加载资源——真的很短。该页面中还有其他一些详细信息,并且它们也在几毫秒内加载。当我去页面的网络分析时,完全加载表格花了 8 秒。我还没有使用 EXPLAIN ANALYZE,但是由于它正在检索整个表,我猜它只是在进行全表扫描。但我明天会仔细检查。 【参考方案1】:

加载所花费的时间需要分解为复合部分。如果您关心查询速度和索引使用情况,您将需要确定正在执行的原始查询。然后,您可以使用 explain analyze 命令来确定实际发生的情况。

【讨论】:

以上是关于尽管有索引,但网页加载缓慢 ajax 查询检索时间过长的主要内容,如果未能解决你的问题,请参考以下文章

尽管存在相关索引,但 PostgreSQL 查询速度很慢

如何解决SQL Server查询速度缓慢的问题

从 Spark Cache VS 数据库中检索数据缓慢

如何解决SQL Server查询速度缓慢的问题

在 XAMPP 服务器上运行的网页加载非常缓慢

如何优化将大量元素动态添加到网页中