2016-03-01 118 views
1

使用服務器推送與Http2快速問題/澄清。Http2服務器推送支持

因此,我安裝了libnghttp2,然後用http2支持從源代碼編譯Apache 2.4.18,並創建了一些使用https的自簽名證書。

我則在指令協議H2C HTTP/1.1加入並創建了一個虛擬主機,包括:

<Location /index.html> 
    Header add Link "</css/site.css>;rel=preload" 
</Location> 

,所以我可以測試服務器推送。使用Firefox打我的前端我得到的h2頭返回以及一個Link頭值是/css/site.css,但我的css isnt預加載.. 不知道我是否從根本上誤解了服務器推進是做或不做或者我做錯了什麼。

我已經嘗試了一些變化的CSS值和位置值,但沒有成功。經過一段時間的搜索,但無濟於事,所以任何正確的方向都會很棒。

回答

0

如果您的服務器端代碼是在java中,請嘗試使用PushBuilder對象將您的文檔推送到客戶端。您的網頁內容將按PushBuilder對象推送的順序緩存到客戶端的瀏覽器中。確保只使用一個PushBuilder對象來推送這些文檔。

此外,建議您使用協議H2 HTTP/1.1的替代協議H2C HTTP/1.1

1

你可以再試一次:

<Location /index.html> 
Header add Link "</css/site.css>;rel=preload;as=style" 

,如果你想要把圖像你應該使用「as = image」

0

協議h2c http/1.1

選擇h2c將啓用http/2清除,只有幾個命令行瀏覽器支持。由於您使用Firefox,這意味着它將默認爲http/1.1,所有主流瀏覽器僅支持通過TLS的HTTP/2。
要查看當前版本的Firefox選擇,你可以使用插件像this one或者你可以打開開發者工具(F12),點擊每一個資源,看慣了協議的版本,解釋here
Headar add Link命令看起來不錯。
您可以使用nghttp或curl測試當前設置(檢查您的版本是否支持HTTP/2)命令行瀏覽器