【问题标题】:Best practices/optimization concerning using base_url() of codeigniter关于使用 codeigniter 的 base_url() 的最佳实践/优化
【发布时间】:2012-06-08 02:18:45
【问题描述】:

我的问题指的是base_url(),它是codeigniter的一个辅助函数。这个想法是它抓取我的应用程序的 base_url 并允许我在任何视图页面上的任何位置回显它。

下面是我使用 base_url() 的示例。

<script type="text/javascript" language="javascript" src="<?php echo base_url(); ?>assets/js/jquery.js"></script>

我有时会在 DOM 加载中多次调用它,并想知道将它存储到 php 变量中是否是个好主意,而不是每次都调用 base_url 函数。像这样:

<?php 
  $this->load->helper('url'); 
  $base_url = base_url(); // Set to variable, so we don't method call each time
?>

<script type="text/javascript" language="javascript" src="<?php echo $base_url; ?>assets/js/jquery.js"></script>

我知道这是一个相当新手的问题,但我一直对优化非常有强迫症,我想知道添加代码是否值得。我必须两次添加变量的定义,因为我在头部和身体中都使用了 base_url()。感谢您的帮助。

【问题讨论】:

  • 它会在你的服务器内存中临时存储几个字节的数据,以消除几个函数调用的开销,这似乎是一个很好的交易 imo。除非您有几千个用户同时加载您的页面,否则它不会产生明显的变化。
  • 将 $baseurl 存储到会话中是否可行,以便我可以在我的头部和身体标签中调用它?
  • 会话?您是否在不同的作用域函数中使用 var ?是的,您可以使用全局变量,也可以将其存储在 $_SESSION 中,即 superglobal

标签: php codeigniter optimization


【解决方案1】:

从性能的角度来看,这两种方式都没有关系。做任何使您的代码更易于阅读/维护的事情。但是不要将它放在会话中。

附带说明,如果您担心微优化,则不应首先使用 PHP,因为它是原始处理能力最慢的东西之一。

【讨论】:

  • +1 用于诅咒 php,但在主题上,有什么理由不使用 $_SESSION?它将保留在服务器端,您可以从任何范围访问它,而无需像我所见的全局变量那样声明global myVar;。当然,这不是最佳做法,但应该可以。
  • @FabrícioMatté 因为$_SESSION 存储在磁盘/内存缓存服务器/whatever-other-solution-that-is-much-slower-than-variable-or-function-call 上
  • 哦该死的我的愚蠢。 :P 我知道他们从服务器获取了更多资源,但没有意识到它是以磁盘/内存缓存的形式。
  • 哈哈,我现在不打算退出 php,但我会在以后研究它。性能方面,那么这种优化不值得吗?
  • @JereJamesRutter 好吧,您不应该这样做,Web 应用程序通常受 I/O 限制,因此即使您有更好的原始性能,CPU 大部分时间仍然处于空闲状态。 YMMV 关于那个。如果您的应用程序是完善的(也就是说,它执行更昂贵的事情,例如数据库 I/O),那么执行这些 base_url 调用所花费的时间可能是 0.00001%,所以是的,这不值得:P 如果你真的怀疑它,你总是可以使用分析器。
猜你喜欢
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 2011-01-22
  • 2020-11-07
  • 2019-03-13
  • 2014-01-29
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多