2011-09-21 72 views
2

使用框架可以很容易地列出完整的URL,以便我的html src和href屬性,並且我覺得我通過列出完整的url而不是相對路徑。但這是否更快?我是否會招致額外的DNS查詢?當內容位於同一臺服務器上時,最佳做法是什麼?html src和href屬性的相對路徑或url

<img src='http://site.com/images/img1.png' />

VS

<img src='/images/img1.png' /> 

笨的形象幫助IMG()就像this from the users' guide

echo img('images/picture.jpg'); 
// gives <img src="http://site.com/images/picture.jpg" /> 

和CodeIgniter的錨幫手錨()就像this from the users guide

echo anchor('news/local/123','My News'); 
// gives <a href="http://example.com/index.php/news/local/123" >My News</a> 
+1

我在遠程服務器上開發,所以http查找總是有效的。我在每次保存時將本地ide與遠程服務器同步,並且只在遠程服務器上運行代碼。 「http://mysite.com/」部分由我的框架中的一個方法生成,所以如果我切換域,很容易改變。沒有人回答我關於DNS查詢速度的問題,這是我的要求。 – steampowered

+0

我編輯了我的問題,包括codigniter的東西,也標記codeigniter – steampowered

回答

4

就DNS而言,如果您使用相對或絕對URL,則無關緊要。無論如何,您的瀏覽器最終都會將服務器URI預先掛起。此外,您的網絡堆棧首次執行查找,並緩存IP。除非出現問題,否則每頁只能有一個查找。 YMMV當然,但這應該是這一切如何運作。

0

可移植性將是我的問題。我會根據這個選擇第二個選項。

4

'從不'(幾乎從不)使用絕對路徑。

它會在以後咬你。

例如,當您切換/添加另一個域時。

從您的測試轉到生產服務器。

基本上規則是內部URL的應該是相對的。

+0

我最近買了一個高級腳本,這是使用像這樣的完整url在這個和定義$ basehttp =「http://www.mydomain.com」;在配置文件中,更改域名非常簡單,但仍不清楚使用哪一個。我正在從網頁速度上看。 – AMB

1

哦,你真的不想使用完整的路徑。你將有很多工作要做的你:

  • 如果你想開發網站本地
  • 您更改/添加域(開發,分期等)
  • 您切換到使用CDN

你也會打破你的開發環境,因爲大多數現代的將執行本地目錄查找。不能用域來做到這一點。

另外,在開發環境中,您將從生產站點拉出,這將使修改和添加圖像非常棘手。

最重要的是,使用您的代碼的其他開發人員會嘗試殺死您。這對你的健康有害。

+0

大多數框架允許您爲域定義一個變量,因此使用一行代碼很容易更改整個站點域。只需將「localhost /」添加到一行代碼即可。 – steampowered