我有一个BIG表输出到HTML并进入浏览器。当表格是200行时,它很好,但当它是20,000行时,它会扼杀浏览器。我将所有内容输出到$html .= '<td> and <th>'
的变量中,最后输出echo $html
。在我的新Mac上,使用SSD和32 gig ram,20,000行表需要大约6秒才能加载,但会停止一切。五彩缤纷的死亡球旋转,音乐停止播放,然后事物出现,一切都继续正常。
问题是:如何在浏览器中输出一个大表而不会阻塞它?
请注意,正如Freddy Mercury所说,我想要一切,我现在想要它。所以,请不要告诉我当时制作20行的分页表。我知道该怎么做,我不想这样做。无论如何,要做到这一点,你必须加载所有的行,并只显示20,这会导致相同的窒息!
答案 0 :(得分:0)
您是否可以让内容仅显示前20行,然后当您通过类似于Facebook和Pintrest工作方式的ajax滚动其他信息时?您可以“最终”获取所有数据,但不要计划通过尝试一次性加载它来使其工作。
答案 1 :(得分:0)
无论如何,要做到这一点,你必须加载所有的行,并且只显示20,这会导致同样的窒息!
这绝对是一个坏主意。我会在你的模型中编写一个方法来获取下一n个记录。您可以在初始页面加载时通过Ajax调用此方法,然后每次用户单击“Next N Entries”链接并更新页面时再次调用此方法。
您绝对不想为20K项加载HTML并使用jQuery一次隐藏和显示n条记录; DOM遍历将在好的浏览器中永远消失,并且会彻底崩溃IE。