URL設(shè)計(jì)原則和規(guī)范
去年秋天寫的一個(gè)文檔,花了我兩天時(shí)間. URI設(shè)計(jì)原則和規(guī)范 什么是URI(URL)定義URI: Uniform Resource Locators URL:Uniform Resource Identicators URI分兩部分,scheme, scheme-specific,這兩部分由冒號分割開。schema包括HTTP,FTP,NEWS,GOPHER等,詳情參見RFC1738(ftp://ds.internic.net/rfc/rfc1738.txt) 語法HTTP,FTP的語法很相像,都是這樣: schema://user:password@host:port/directory/file.extension 編碼URI中理論上只允許ASCII字符。 部分特殊符號必須編碼,不能直接出現(xiàn)在URI中,如“~”
Web項(xiàng)目中,這些都是URI: 鏈接地址(a標(biāo)簽的href屬性) 圖片的源(img標(biāo)簽的src屬性) 多媒體文件的源(object標(biāo)簽的src屬性) CSS,JavaScript地址(link標(biāo)簽的href 屬性,script標(biāo)簽的src屬性) 為什么要設(shè)計(jì)好的URI重要的入口 便于傳播 便于用戶挖掘內(nèi)容 URI的常見問題難以輸入URI不必要的冗長比如: http://www./PR/announcements/1994/dec/new-server-version.txt 這個(gè)還算好的,看看這個(gè):http://www./servlet/ArticleNews/PEstory/TGAM/20020909/RVCRR/Business/business/business_temp/2/2/5/ 莫明其妙的大寫字母比如: ftp://ftp./pub/docs/OnTBGHill.txt 不常見的標(biāo)點(diǎn)符號ftp://ftp./pub/docs/moon_3+manual 在紙介質(zhì)上顯示很困難一些字符在紙上打印出來不容易辨認(rèn),例如 “~”(數(shù)字鍵1旁邊那個(gè)鍵)在不同的字體下面顯示不同,有時(shí)候在一行的頂部,有時(shí)候在底部。 “l”(字母L的小寫版本)和“1”(數(shù)字一)幾乎無法分辨——在紙介質(zhì)上的時(shí)候,同樣的還有“O”和“0”。 “`”太微小,以致于人們在某些情況下看不到它。 主機(jī)和端口的問題除了 scheme-specific 部分,domain和port也可能給用戶帶來困惑。 http://admin.:8001/docs/thesis/jones 設(shè)計(jì)URI應(yīng)該遵循的原則URI是網(wǎng)站UI的一部分,因此,可用的網(wǎng)站應(yīng)該滿足這些URL要求
聰明的選擇URI一定要短為了URI能被方便的錄入,寫下,拼寫和記憶,URI要盡可能的短,根據(jù)w3c提供的參考數(shù)據(jù),一個(gè)URI的長度最好不要超過80個(gè)字節(jié)(這并非一個(gè)技術(shù)限制,經(jīng)驗(yàn)和統(tǒng)計(jì)提供的數(shù)據(jù)),包括schema和host,port等。 大小寫策略URI的大小寫策略要適當(dāng),要么全部小寫,要么首字母大寫,應(yīng)避免混亂的大小寫組合,在Unix世界,文件路徑隊(duì)大小寫是敏感的,而在Windows世界,則不對大小寫敏感,所以,http://www./FOO和http://www./foo是兩個(gè)不同的URI(盡管他們在Windows平臺有相同的含義) 允許URI管理URI映射管理員可以重新組織服務(wù)器上的文件系統(tǒng)結(jié)構(gòu),而無需改動(dòng)URI,這就需要URI和真實(shí)的服務(wù)器文件系統(tǒng)結(jié)構(gòu)之間有一個(gè)映射機(jī)制,而不是生硬的對應(yīng)。 這種映射機(jī)制可以通過如下技術(shù)手段實(shí)現(xiàn): Aliases,別名,Apache上的目錄別名,IIS上的虛擬目錄 Symbolic links,符號鏈接,Unix世界的符號鏈接 Table or database of mappings,數(shù)據(jù)庫映射,URI和文件系統(tǒng)結(jié)構(gòu)的對應(yīng)關(guān)系存儲在數(shù)據(jù)庫中 標(biāo)準(zhǔn)的重定向管理員可以簡單的通過修改HTTP狀態(tài)代碼來實(shí)現(xiàn)服務(wù)器文件系統(tǒng)結(jié)構(gòu)變更之后的URI兼容,可以利用的HTTP Status Code有: 301 Moved Permanently ([RFC2616] section 10.3.2) 302 Found (undefined redirect scheme, [RFC2616] Section 10.3.3) Temporary Redirect ([RFC2616] Section 10.3.8) 用獨(dú)立的URI技術(shù)無關(guān)的URI
身份標(biāo)志和Session機(jī)制
內(nèi)容變更時(shí)使用標(biāo)準(zhǔn)轉(zhuǎn)向對變更的內(nèi)容使用標(biāo)準(zhǔn)的重定向對刪除的資源使用HTTP410提供索引代理索引策略Content-LocationContent-MD5提供適當(dāng)?shù)木彺嫘畔?/h2>
|
|
|