2011-04-21 27 views
1

在當前的HTTP規範中,URL片段(包含並在#之後的URL部分)不會以任何方式發送到服務器。然而,隨着AJAX的普及,使用片段來維護某種形式的狀態,在很多情況下,服務器可以在請求時瞭解URL片段。例如,如果您轉到http://facebook.com,然後單擊流中的用戶名,URL將變爲http://faceboook.com/#!/username - 允許FB更新您的頁面,而無需重新加載其所有引導程序JS和HTML。但是,如果您要使用瀏覽器重新加載,服務器將無法看到URL的「#/!用戶名」部分,因此無法爲您預先呈現內容。這會強制您的瀏覽器在客戶端Javascript已加載並解析片段後發出額外請求。是否有過將URL片段包含到HTTP請求中的提議?

我想知道是否有任何努力或提出建立一個標準的機制來實現這一點。

例如,可能有一個標準的HTTP標頭,它將與URL片段的值一起發送 - 任何關心此類事情的服務器都可以訪問它。

對於整個網絡應用程序社區來說,這似乎是一件非常有用的事情,所以我很驚訝沒有聽到任何建議。或許我錯過了它。

+1

你有一個例子,查詢字符串不會做這項工作嗎? – hammar 2011-04-21 01:51:26

+0

你如何聲稱'阿賈克斯使用片段狀態'?許多有狀態的事情都會使用基本URL或查詢字符串來維護它們所需的所有狀態。 – bmargulies 2011-04-21 01:59:47

+0

我在第二段中添加了一個FB如何使用片段來反映當前狀態的示例。在這個實例中使用URL參數會強制應用程序在每次視圖轉換時重新加載自身。 – levik 2011-04-21 20:16:15

回答

0

我發現this proposal by Google使Ajax頁面可以被抓取,但是它解決了更多的使用案例。具體來說,它創建了一種用URL參數替換URL片段的方法,以便從服務器獲取與通過片段訪問等效URL的客戶端生成的HTML輸出相同的HTML輸出。但是,這樣的URL對於實際運行Ajax應用程序是沒有用的,因爲它們每次都需要重新加載頁面。

0

Imho,片段標識符實際上不是一個存儲狀態的好地方,它已經被設計用於別的東西。

這就是說,http://www.jenitennison.com/blog/node/154有一個很好的討論整個主題。

相關問題