【问题标题】:Help with a possible performance problem (in a php pagination)帮助解决可能的性能问题(在 php 分页中)
【发布时间】:2010-07-28 00:07:35
【问题描述】:

您好我有一个搜索引擎,但是在分页中我必须重新定义 url 中的搜索词,我的意思是 <a href='http://mysite.com/search.php?q=searchTerm&currentPage=2'>Next</a>.

请告诉我我做得好还是有其他方法可以做到这一点

【问题讨论】:

  • 您预计会出现什么性能问题?
  • 我坚持因为每次用户更改页面时我都会请求(单击下一个,上一个按钮)

标签: php mysql performance pagination


【解决方案1】:

除非您预计流量会非常高,否则这不太可能成为问题。这是完成分页的标准方式——如果你发现你确实有性能问题,那么重新考虑你做事的方式。没有理由过早优化。不要邀请别人来这里引用高德纳的话,拜托

另一种方法是一次向客户端发送多页数据,然后使用 Ajax 进行分页。缺点是创建和发送第一个请求需要更长的时间,使用更多带宽,而且很多用户可能永远不会超出给定查询的第一页。

如果您希望总体上提高效率或性能,这是一个相当大的话题。您可以添加索引、缓存、探索替代数据存储、添加服务器等等。您可以说,运行查询一次获取 5 个页面,将结果存储在 memcache 中,然后访问这些结果,直到您需要新的 5 个页面。

这取决于最终成为瓶颈的是什么。通常,它与您的预期不同,而且通常作为解决方案起作用的东西也是出乎意料的。

【讨论】:

  • 对不起哥们,新手总是问这样的问题,反正thanx。
【解决方案2】:

我看不到 PHP 端的代码,所以您可能已经知道这一点,但在这种情况下我可以建议一件事:

确保在查询中使用 LIMIT 子句仅选择要显示的行,并明确选择要使用的列。

整个操作中最昂贵的部分很可能是搜索词组件,而不是分页组件。除非您有大量相同的搜索词,否则缓存可能无济于事。

【讨论】:

  • 哦!你明白我的意思,问题是基于 searchTerm 组件。
【解决方案3】:

与任何其他方式相比,使用 $_GET 对所有意图和目的都没有影响。此外,由于这些 url 除了检索信息之外没有做任何事情,因此使用这个查询字符串与 post 相比很好(或者实际上是适当的)。

换句话说:就我所见,你做得对。创建/编辑/删除数据时,使用 with method="post",读取数据通常使用链接(或 with method="get")。

【讨论】:

    【解决方案4】:

    您首先担心性能是好事,但我完全同意 Alex JL 的观点:这一切都取决于。
    如果您仍然对分页和性能感兴趣,我创建了一些教程如何使用 javascript 和 php。代码当然可以更好,你应该适应你的搜索查询。无论如何,也许它会有所帮助。
    http://www.kwalinux.nl/pagination/849/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 2011-01-19
      • 2011-10-02
      相关资源
      最近更新 更多