我有一张只有3,000条记录的表格 我在主页上渲染这3000条记录而没有分页,我的客户对分页不感兴趣......
所以要完全显示页面需要大约1分钟,15秒。可以做些什么来加快页面加载速度?
我的表结构:
答案 0 :(得分:1)
慢下来哪里?查询还是服务?
如果是前者,请参阅上面的评论。如果是后者:
在服务器上启用gzip。否则,将[HTML?]输出捕获到文件,压缩(zip),然后将其作为下载服务。对于任何其他格式,如果您认为其他格式可以使其比浏览器(CSV和Open Office)更好。
如果您要将数据输出到HTML表格中,那么您可能会遇到浏览器在呈现表格之前等待表格结束的问题。您可以将其分成多个表块,例如每500个记录/行,或者尝试CSS“table-layout:fixed;”。
答案 1 :(得分:0)
检查Todos
答案 2 :(得分:0)
虽然您可以实现缓存来执行此操作,但您不一定需要这样做,引入不必要的缓存结构通常会导致其自身的问题。根据瓶颈的位置,它甚至可能对你没有多大帮助,或者根本没有帮助。
您需要查看两个地方进行分析:
1)您用来获取数据的查询。看看它的计划,或者如果您不喜欢这样做,请在您喜欢的查询工具中运行它,看看如何很长一段时间才能回来。如果不花太长时间,你就会非常清楚你的瓶颈不是查询。如果查询本身需要很长时间,那么您应该集中精力。
2)您的网页呈现方式。您的网页大小是多少? bytes ?它可能太大了。你能通过格式化缩小尺寸吗?你能更有效地使用CSS来消除页面上的重复样式吗?您使用固定或动态表格布局吗?动态通常会慢一点,特别是对于大型表。尽量避免嵌套表。尽一切可能使页面尽可能小,并继续测试!
答案 3 :(得分:0)
同时显示我想要的记录 显示guidername所以,我做了一次 返回指南名称的函数
听起来你需要使用JOIN。这是一个简单的例子:
SELECT * FROM customer JOIN guider ON guider.id=customer.guider_id
这会将您的网页从使用N + 1(3001)查询更改为仅一个。
确保将guider.id
和customer.guider_id
都编入索引,并确保使用适当的数据类型(例如整数)。
答案 4 :(得分:0)
这是一个小清单,你应该考虑什么来提高性能,重要性是相对于每一点,所以第一个不是最重要的 - 这取决于你的项目的细节。 / p>
检查数据库结构。如果只有这两个表,你可能会做的很少。但请记住,有索引和越来越多的记录之类的东西,第二次非规范化表格结构将提高检索结果的速度。
使用相当一个查询来选择数据,而不是通过ID迭代并重复执行选择
为指导者运行单独的查询,我假设只有少数几个。将所有导向器保存在数据结构中,例如首先,使用外键将正确的密钥应用于当前记录 - 这可能会节省大量必须从数据库传输到Web服务器的数据。
使用类似mysqli_result::fetch_all()
的内容获取结果集,该内容返回包含所有结果的二维数组。这应该比使用fetch_row()
清理HTML输出,使用(外部)CSS。如果您在每行中使用style=" ... a lot of formatting code ..."
属性格式化您的内容,这将节省大量输出空间。如果您使用一个大表,请将它们拆分为多个表(某些浏览器在呈现之前等待整个表加载)。
在很多语言中非常重要:使用字符串构建器将结果连接到输出字符串!
缓存:考虑每天生成一次输出或每小时生成一次。将其写入打开的缓存文件,而不是查询数据库并在每个请求上构建相同的内容。也许您希望将此生成的文件作为下载提供,而不是在网络上将其显示为纯HTML网站。
最后但同样重要的是,检查与Web服务器和数据库的连接,服务器负载以及请求数。如果您的服务器负载很重,那么这里的所有季节可能有助于减轻负载,或者您只需要升级硬件。
答案 5 :(得分:0)
LOL
每个人都在谈论大男孩玩具,比如数据库结构,缓存和东西
虽然问题很可能仅仅出现在HTML和浏览器中。
只是将整个HTML表格拆分成块将有助于第一个块立即显示,而其他人最终将会出现。
只有那些说首先描述整件事的人才是对的 试图在没有分析结果的情况下回答是在黑暗中拍摄。