2012-06-03 61 views
1

我的問題涉及base_url(),它是codeigniter的幫助函數。這個想法是,它抓住了我的應用程序的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 fuynction每次一個好主意。像這樣:

<?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()。謝謝你的幫助。

+0

它會在你的服務器的內存中臨時存儲幾個字節的數據以消除幾個函數調用的開銷,看起來像一個很好的交易imo。並不是說它會引起顯着的變化,除非你有幾千個用戶同時加載你的頁面。 –

+0

將$ baseurl存儲到會話中是否可行,以便我可以在頭部和身體標記中調用它? – Omegalen

+0

會話?你是否在不同的作用域函數中使用var?是的,你可以使用全局變量,或者將它存儲在'超_全球'的$ _SESSION中(http://php.net/manual/en/language.variables.superglobals.php)。 –

回答

1

從性能角度來看,無論哪種方式都無所謂。做任何事使你的代碼更容易閱讀/維護。不要把它放在會話中。

請注意,如果您關注微型優化,則不應首先使用PHP,因爲它是原始處理能力中最慢的部分之一。

+0

+1詛咒php,但在主題,任何堅實的理由不使用'$ _SESSION'?它將被保留在服務器端,您可以從任何範圍訪問它,而無需像全局變量那樣聲明'global myVar;'就我所見。當然,這不是最佳做法,但應該工作。 –

+0

@FabrícioMatté因爲'$ _SESSION'被存儲在磁盤/內存緩存服務器上/其他任何解決方案 - 那是比變量或函數更慢的調用 – Esailija

+0

哦,該死的我的愚蠢。 :P我知道他們從服務器獲得了更多資源,但並未意識到它是以磁盤/內存緩存的形式存在的。 –