學習Angular時寫了一個音樂播放器
oschina地址
github地址
爲了兼容android chrome,參考了這篇文章;android
在數據讀取中要中斷的時候,能夠把audio.src設爲null,並顯式調用audio.load(),
此時對於Android會中斷數據讀取,而且canplay也不會發生git
因此在個人代碼中也如此使用了github
1
2
|
_audio.src =
null;
_audio.load();
|
可是因爲百度有些音樂沒法直接播放;須要服務器轉發,因此音樂連接帶上了服務器轉發地址web
在前面幾首歌上帶上轉發沒有問題;可是當列表循環後;就出現了沒法從服務器上獲取音樂內容了;
查看chrome控制檯,連接上顯示 Provisional headers are shown
chrome
關閉標籤;從新打開網址;音樂有又能夠加載了!!!瀏覽器
剛開始覺得是由於本地環境的問題;將代碼掛在到服務器上,依然有問題
開始谷歌搜索 Provisional headers are shown
, 在這篇文章中http://segmentfault.com/q/1010000000364871 緩存
之因此會出現這個警告,是由於去獲取該資源的請求其實並(還)沒有真的發生,因此 Header 裏顯示的是僞信息,直到服務器真的有響應返回,這裏的 Header 信息纔會被更新爲真實的。不過這一切也可能不會發生,由於該請求可能會被屏蔽。好比說 AdBlock 什麼的,固然了不全是瀏覽器擴展,具體狀況具體分析了服務器
可是我測試的瀏覽器只有開發工具,沒有 AdBlock之類的;因此passwebsocket
接着 有找到這篇文章https://code.google.com/p/chromium/issues/detail?id=327581
That is because websockets never report their requestHeadersText.
Fixed for the new implementation.
在新版本中修復… 個人chrome是42;因此 pass
接着在http://stackoverflow.com/questions/21177387/caution-provisional-headers-are-shown-in-chrome-debugger
發現推薦答案依然是 AdBlock等之類的攔截, 繼續看回答, 說使用 chrome://net-internals
; 玩了下,根本就不知道怎麼玩,pass
接着往下查看 發現有個回答
I believe it happens when the actual request is not sent. Usually happens when you are loading a cached resource.
回答內容是說請求沒有被髮送,由於是載入緩存資源.
一想很對啊,音樂資源默認是緩存的,可是設置不緩存會讓音樂加載速度太慢;繼續往下查看
Another possible scenario I’ve seen - the exact same request is being sent again just after few milliseconds (most likely due to a bug in the client side).
In that case you’ll also see that the status of the first request is 「canceled」 and that the latency is only several milliseconds.
大概是說 徹底相同的請求間隔數毫秒(過短),致使加載失敗,查看了chrome控制檯發現
1
2
3
|
http://ngmusic.coding.io/null
http://ngmusic.coding.io/serverget?url=http%3A%2F%2Ffile.qianqian.com.....
都有 Provisional headers are shown
|
猜測是由於 http://...../null
加載失敗 致使 http://..../serverget?url=http%3A%2F%2Ffile.qianqian.com.....
的緩存請求也失敗(阻塞)
故將上面 null
加載去掉
1
2
|
// _audio.src = null;
// _audio.load();
|
Provisional headers are shown
出如今 載入緩存資源,請求沒有被髮送, 而若是上一個資源加載失敗,可能致使從緩存加載的資源失敗,
即緩存資源請求以前的請求不能失敗,否則就有可能出現問題
至此,終於搞定了這個渣問題!!!!!!!!!!!!!!!!!!!!!!