文章引用自:https://www.cnblogs.com/kendrick/p/c538e9a43f34479e928f7d97aa8f30d8.html
今天突然好奇班利,想?yún)^(qū)分www.abc.com/efg 和www.abc.com/efg/這兩個網(wǎng)址的區(qū)別竟闪。即分析一下url末尾加個斜杠是否有特殊的效果玩焰。
找到網(wǎng)上的介紹:
當(dāng)Web服務(wù)器接收到對某個末尾不含斜杠的url請求時,例如“www.abc.com/efg”夏块,這時服務(wù)器會搜索網(wǎng)站根目錄下有沒有名為“abc”的文件,如果沒有就把abc當(dāng)做目錄處理惕蹄,然后返回abc目錄下的默認(rèn)首頁绎狭。當(dāng)Web服務(wù)器接收到的是末尾帶斜杠的請求時就會直接當(dāng)做目錄處理。
同樣侥涵,根據(jù)微軟官方文檔Internet Explorer and Connection Limits:
Another web-performance tip: When generating hyperlinks, always include a trailing slash if possible. For instance, navigating to http://msdn.microsoft.com/ie takes one more roundtrip than http://msdn.microsoft.com/ie/. When the browser navigates to the /ie url, the server merely sends down a 301 to the /ie/ url. Both links work, but the second version is faster.
ok沼撕,根據(jù)上述的材料,我們是否可以認(rèn)為url加上斜杠能加快訪問速度芜飘。
接下來通過一個簡單的flask項目測試一下:
Flask框架通過路由綁定url和視圖函數(shù)务豺,綁定http://127.0.0.1:5000/abc和http://127.0.0.1:5000/def/url。
-
IE瀏覽器嗦明、Firefox瀏覽器
訪問http://127.0.0.1:5000/abc正常, 訪問http://127.0.0.1:5000/abc/ 報404錯誤笼沥,訪問http://127.0.0.1:5000/def之后301重定向到http://127.0.0.1:5000/def/,訪問http://127.0.0.1:5000/def/正常* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 127.0.0.1 - - [29/Jun/2018 22:53:16] "GET /abc HTTP/1.1" 200 - 127.0.0.1 - - [29/Jun/2018 22:54:18] "GET /def HTTP/1.1" 301 - 127.0.0.1 - - [29/Jun/2018 22:54:18] "GET /def/ HTTP/1.1" 200 - 127.0.0.1 - - [29/Jun/2018 22:57:46] "GET /def/ HTTP/1.1" 200 -
總結(jié):
- 網(wǎng)站要進行統(tǒng)一的標(biāo)準(zhǔn)娶牌,要么用戶訪問和網(wǎng)站url路由都在url末尾不加斜杠奔浅,要么都不在url末尾加斜杠,如果采用統(tǒng)一的標(biāo)準(zhǔn)在訪問速度不會有任何的區(qū)別诗良。
- 但是用戶的行為是不可以限制和預(yù)測的汹桦。用戶可能會在url后面加個斜杠。
- 兩個技術(shù)方案各有利弊:1.網(wǎng)站路由url不加斜杠鉴裹,用戶自己加斜杠之后訪問404营勤,但是不會出現(xiàn)重定向的問題灵嫌;2.網(wǎng)站路由url加斜杠,用戶訪問的url無論加不加斜杠均可訪問正常葛作,但是不加斜杠的訪問鏈接會做重定向寿羞,影響訪問速度。