2011-04-22 78 views
3

在我的網站上,用戶可以在文本輸入字段中插入超鏈接。然後,這個鏈接(一個字符串)存儲在我的數據庫中。超鏈接可以多久?

在MySQL上,包含超鏈接字符串的字段是TEXT類型,但我認爲它對於此類信息來說太長了。此外,VARCHAR(255)有時候太短。

什麼是最好的類型/長度來存儲超鏈接?很高興知道鏈接可以多久。

+0

當一個項目我工作面臨着同樣的問題,我們採取了一個兩層的做法 - 限制4K,但在正常化URL並將URL記錄的ID存儲在其他表中。在我們的應用程序中,URL經常重複使用,所以規範化對我們來說是有意義的。 – 2011-04-22 23:58:10

+0

沿着標準化方法,您可以選擇存儲地址的bit.ly URL ...該API可在http://code.google.com/p/bitly-api/wiki/ApiDocumentation – 2011-04-23 00:05:00

+1

超鏈接是一種有意義的URL。許多網絡服務器會高興地接受16kB,但當然這樣的事情完全是瘋了。自己決定什麼是理智的。網址意味着人類可讀,可用和可存儲。在我看來,超過60-80個字符的網址已經是一個令人討厭的事情,但是使用超過100-120個字符(亞馬遜,呃?)的URL的人完全是瘋了,或者完全無知。問問你自己打算輸入一個200字符的字符串,或者想象在手機上拼寫一個300個字符的URL。所以如果你使用VARCHAR(255),你絕對是安全的。 – Damon 2011-04-23 00:24:30

回答

2

參見:What is the maximum length of a URL in different browsers?

你可以使用VARCHAR(2048)如果你想有一個下限。儘管在空間方面使用TEXT沒有任何問題。在這兩種情況下,它們只使用與文本一樣多的空間加上幾個字節來表示長度。詳情請參閱Data Type Storage Requirements

至於你是否應該挑VARCHARTEXT看到:MySQL: Large VARCHAR vs. TEXT?

+0

哦......不知道文本使用的空間與文本一樣多。這是錯誤的關於'int'的權利? – markzzz 2011-04-23 00:07:17

+0

那麼,爲什麼存在varchar?使用TEXT將是相同的:) – markzzz 2011-04-23 00:11:21

+1

這是正確的,'INT'總是4個字節。對於'TEXT',它的長度加上2個字節。有關詳細信息,請參閱http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html。 – WhiteFang34 2011-04-23 00:13:02

1

HTTP沒有指定URL的長度限制。但是,網絡服務器和瀏覽器可能會有限制。

我想一些舊的IE版本只有大約250個字符的限制。

+0

然後它增加到略小於2K(見http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url)。 – 2011-04-22 23:55:40

2

超鏈接可以有多長時間沒有限制。瀏覽器限制GET請求可以使用超鏈接發送的數據量,但實際鏈接本身可以有多長時間沒有限制。

一個標準的TEXT字段可以很好的存儲鏈接(你不會因使用該字段而不是VARCHAR(255)字段類型的性能命中,也不會使用額外的內存,所以真的沒有理由不使用它)