2016-01-20 42 views
-3

是否可以通過Java或Php發送附加到http響應的額外數據?將兩個http響應合併爲一個

我的網站是一個家庭作業平臺:一個用戶將homeworks輸入到數據庫中,然後所有用戶都可以在網站上看到作業。當前的負載效率非常低,因爲瀏覽器發出兩個請求加載的請求:一個用於索引文件,一個用於homeworks。對於家庭作業請求,客戶端還將用戶的設置發送到服務器,基於此,返回的作業由Php腳本生成。

現在,我想知道如果有可能將這兩個請求合併爲一個嗎?是否有可能通過服務器上的Java或Php檢測http請求,讀取cookie(保存設置的位置),然後從數據庫獲取homeworks並將附加到http響應的數據發送給客戶端?或者,更好的做法是,首先只返回索引文件,並儘快將作業數據作爲第二個響應,因爲當客戶端無法顯示作業時,客戶端需要一些時間來解析構建DOM樹無論如何。

在瀏覽網頁時,我偶然發現了諸如「服務器端呈現」和「SPDY」等術語,但我不知道這些是否是正確的起點。

任何幫助都非常感謝,因爲我個人非常感興趣的解決方案,它會大大提高我的網站的加載時間。

+0

「瀏覽器發出兩個加載請求:一個用於索引文件,另一個用於作業」 - 我不明白你的意思。你可以發佈相關的代碼來展示它的工作原理嗎? – kittykittybangbang

+0

由於作業不是一個靜態內容,它需要每次從數據庫中獲取它們。這是通過一個Ajax請求完成的,該請求執行一個PHP腳本,然後將從數據庫獲取的homeworks返回給客戶端。然後,客戶端將作業添加到Dom樹中。你可以在這裏找到網站:aaron.filosofisch.com(雖然是德語) –

+0

仍然需要一些幫助。可以辦到。 – Misunderstood

回答

0

解決您的問題的一個簡單方法是在索引文件中初始化您的數據。

您將創建一個javascript對象,並將其嵌入到由服務器呈現的html中。您可以將此對象放置在全局名稱空間中(例如window.initData下),以便可以通過腳本中的代碼訪問它。

<scipt> 
window.initData = { 
    someVariable: 23, 
}; // you could use json_encode if you use php, or Jackson if you use java 
</script> 

但是,如果您的數據是在單獨的服務器請求中提取的,那麼這不是一個大問題。尤其是當需要更多時間從數據庫/ Web服務中檢索數據時,您可以通過非常快速地獲取靜態內容並在加載(較慢)數據時顯示旋轉器來提供更好的用戶體驗。