Php 将clistview中的第一个结果页替换为静态页
我的应用程序数据库刚刚超过100Gbs,很快就会崩溃 如果我可以用静态页面替换CListView的第一个结果页面,我可以保存它 服务器更容易打印静态页面。我可以根据需要每天轻松地重新生成静态页面 没有代码,因为我不知道如何修改ClistView以达到我的目标,如果可能的话 使用memmory分配时可以找到答案 对于那些知道如何与memmory合作的人来说,有一个术语“哨兵” 向队列添加新数据时,必须找到数据的正确位置,然后插入数据 通过使用Sentinel,队列中将始终至少有2个元素 这就是我需要达到的目标 我需要在clistview的第一个元素之前放置一个哨兵 我需要操纵clistview;我只想设置clistview的第一个页面,使用我的静态页面 也许分页将设置为40个元素,而我的静态页面每页将有1000个元素 但是当用户点击第2页、第3页或第4页时。。。clistview应该列出接下来的40个 实际上,对于第2页,clistview将列出第一个实际结果;所有内容都被推到右侧您可以使用variable byPhp 将clistview中的第一个结果页替换为静态页,php,sql,yii,Php,Sql,Yii,我的应用程序数据库刚刚超过100Gbs,很快就会崩溃 如果我可以用静态页面替换CListView的第一个结果页面,我可以保存它 服务器更容易打印静态页面。我可以根据需要每天轻松地重新生成静态页面 没有代码,因为我不知道如何修改ClistView以达到我的目标,如果可能的话 使用memmory分配时可以找到答案 对于那些知道如何与memmory合作的人来说,有一个术语“哨兵” 向队列添加新数据时,必须找到数据的正确位置,然后插入数据 通过使用Sentinel,队列中将始终至少有2个元素 这就是我需
CListView
的页面索引。当然,这不如返回静态页面快,但可以显著提高性能
更新
要在CListView
中替换指向第一页的链接,您可以覆盖以下方法:
您可以使用variable byCListView
的页面索引。当然,这不如返回静态页面快,但可以显著提高性能
更新
要在CListView
中替换指向第一页的链接,您可以覆盖以下方法:
根据你的评论,我猜你可能想要这样的东西:
<?php if($dataProvider->pagination->currentPage==0): ?>
<?php /*
Render your static content + a custom CLinkPager here.
Feed $dataProvider->pagination as 'pages' into the link pager.
*/ ?>
<?php else: ?>
<?php /* Render your listview here */ ?>
<?php endif; ?>
正如我在上面的评论中所说,您仍然会看到1个查询来获取项目计数。只要同时为“静态”内容呈现分页,您就无法避免这种情况。从您的评论中,我猜您可能想要这样的内容:
<?php if($dataProvider->pagination->currentPage==0): ?>
<?php /*
Render your static content + a custom CLinkPager here.
Feed $dataProvider->pagination as 'pages' into the link pager.
*/ ?>
<?php else: ?>
<?php /* Render your listview here */ ?>
<?php endif; ?>
正如我在上面的评论中所说,您仍然会看到1个查询来获取项目计数。只要同时为“静态”内容呈现分页,就无法避免这种情况。我使用的是页面缓存;但是有可能替换第一页吗?如果您使用页面缓存并且可以轻松地重新生成
CListView
的第一页的静态内容,这是否意味着您只需要替换CListView
的寻呼机中指向第一页的链接?您应该获得+1;您的解决方案可能是最好的,即使我已经使用了它,并且想要更多我正在使用页面缓存;但是有可能替换第一页吗?如果您使用页面缓存并且可以轻松地重新生成CListView
的第一页的静态内容,这是否意味着您只需要替换CListView
的寻呼机中指向第一页的链接?您应该获得+1;您的解决方案可能是最好的,即使我已经在使用它并且想要更多您想在静态页面上显示什么?如果它真的是一个静态页面,那么它甚至没有分页。否则它就不再是静态的了。在这种情况下,我想知道你想如何导航到下面的页面。我想激活导航,即使第一个页面是静态的,那么你不应该称之为“静态页面”。您将在该页面上看到一个DB查询,因为分页总是需要一个查询来获取总计数。您希望在静态页面上显示什么?如果它真的是一个静态页面,那么它甚至没有分页。否则它就不再是静态的了。在这种情况下,我想知道你想如何导航到下面的页面。我想激活导航,即使第一个页面是静态的,那么你不应该称之为“静态页面”。您将在该页面上看到一个DB查询,因为分页总是需要1个查询来获取总计数;我必须创造一个像这样的假页面;我必须制造一个假传呼机
<?php if($dataProvider->pagination->currentPage==0): ?>
<?php /*
Render your static content + a custom CLinkPager here.
Feed $dataProvider->pagination as 'pages' into the link pager.
*/ ?>
<?php else: ?>
<?php /* Render your listview here */ ?>
<?php endif; ?>