簡體   English   中英

請求之前的HTTP響應

[英]HTTP Response before Request

我的問題可能聽起來很愚蠢,但我只是想確定一下:

  • 是否可以在請求該資源之前發送HTTP響應?

比如說你有一個HTML頁面index.html只顯示一張名為img.jpg的圖片。 現在,如果您的服務器知道訪問者每次都會請求HTML文件然后請求jpg圖像:

服務器是否可以在HTML文件之后發送圖像以節省時間?

我知道HTTP是一種同步協議,所以理論上它不應該工作,但我只是想讓某人確認(或不是)。

Jacques Mattheij最近發表的一篇文章引用了你的問題,聲稱雖然HTTP被設計為同步協議,但實現卻並非如此。 實際上,瀏覽器(他沒有確切指定哪個)接受請求的答案尚未發送。

另一方面,如果你想要的東西不那么hacky,你可以看看:

  • 推送技術,允許服務器將內容發送到瀏覽器。 取代長輪詢/彗星“黑客”的現代實現是websockets 你可能也想看看socket.io
  • 或者,您可能希望了解客戶端路由 一些實現將它與緩存技術相結合(比如我相信在derby.js中 )。

如果有人請求/index.html並且您發送了兩個響應(一個用於/index.html,另一個用於/img.jpg),您如何知道收件人將獲得兩個響應並知道在第二個響應之前如何處理它們請求進去?

問題不在於發送。 問題是接收器可能會獲得意外數據。

另一個問題是你否認客戶端能夠使用If-Modified-Since和If-None-Match等HTTP緩存工具(即客戶端可能不希望發送/img.jpg,因為它已經有了緩存復制)。

也就是說,您可以使用Comet技術來估算服務器推送的好處。 但這比簡單地預測傳入的HTTP請求要多得多。

通過有效緩存資源,即設置適當的緩存標頭和配置Web服務器進行緩存,您將獲得更好的結果。 如果這是特定問題,您還可以使用base 64編碼內聯圖像

您還可以查看長輪詢 JavaScript解決方案。

您正在尋找服務器推送 :它在HTTP中不可用。 像SPDY這樣的協議有它,但是如果你被限制在HTTP,那你就不走運了。

我不認為可以在同一個HTTP響應中混合使用.html和image。 至於“立即”發送圖像數據,就在第一次請求之后 - 有一個“靜態資源”的概念可能有所幫助(但它需要客戶端為特定資源創建新的請求)。

文章中提到了幾個有趣的事情。

不,這是不可能的。

請求的第一行保存所請求的資源,因此除非您首先檢查請求的字節(至少一行值),否則您將不知道要響應什么。

不.HTTP被定義為請求/響應協議。 一個請求:一個回復。 其他任何東西都不是HTTP,它是其他東西,你必須正確指定它並在兩端完全實現它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM