尽管有索引,但网页加载缓慢 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 查询检索时间过长的主要内容,如果未能解决你的问题,请参考以下文章