Php 将clistview中的第一个结果页替换为静态页

Php 将clistview中的第一个结果页替换为静态页,php,sql,yii,Php,Sql,Yii,我的应用程序数据库刚刚超过100Gbs,很快就会崩溃 如果我可以用静态页面替换CListView的第一个结果页面,我可以保存它 服务器更容易打印静态页面。我可以根据需要每天轻松地重新生成静态页面 没有代码,因为我不知道如何修改ClistView以达到我的目标,如果可能的话 使用memmory分配时可以找到答案 对于那些知道如何与memmory合作的人来说,有一个术语“哨兵” 向队列添加新数据时,必须找到数据的正确位置,然后插入数据 通过使用Sentinel,队列中将始终至少有2个元素 这就是我需

我的应用程序数据库刚刚超过100Gbs,很快就会崩溃

如果我可以用静态页面替换CListView的第一个结果页面,我可以保存它

服务器更容易打印静态页面。我可以根据需要每天轻松地重新生成静态页面

没有代码,因为我不知道如何修改ClistView以达到我的目标,如果可能的话

使用memmory分配时可以找到答案

对于那些知道如何与memmory合作的人来说,有一个术语“哨兵”

向队列添加新数据时,必须找到数据的正确位置,然后插入数据

通过使用Sentinel,队列中将始终至少有2个元素

这就是我需要达到的目标

我需要在clistview的第一个元素之前放置一个哨兵

我需要操纵clistview;我只想设置clistview的第一个页面,使用我的静态页面

也许分页将设置为40个元素,而我的静态页面每页将有1000个元素

但是当用户点击第2页、第3页或第4页时。。。clistview应该列出接下来的40个

实际上,对于第2页,clistview将列出第一个实际结果;所有内容都被推到右侧

您可以使用variable by
CListView
的页面索引。当然,这不如返回静态页面快,但可以显著提高性能

更新

要在
CListView
中替换指向第一页的链接,您可以覆盖以下方法:

您可以使用variable by
CListView
的页面索引。当然,这不如返回静态页面快,但可以显著提高性能

更新

要在
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; ?>