我的网站上有一个简单的视频,只不过是:
import System.Mem.StableName
class Same a where
equals :: a -> a -> IO Bool
instance Same a where
equals = equalsStable
instance Eq a => Same a where
equals = do
b <- equalsStable x y
return (x == y || b)
equalsStable :: a -> a -> IO Bool
equalsStable x y = do
n1 <- makeStableName x
n2 <- makeStableName y
return (n1 == n2)
当我在devtools打开时尝试加载视频时,复选框&#34;禁用缓存&#34;检查,发生以下情况:
视频播放正常。
但是当复选框&#34;禁用缓存&#34;没有检查,我看到了:
只是&#34;加载启动&#34;,仅此而已,视频永远停留在此状态。
多次尝试,我可以肯定地说缓存状态是唯一有所作为的东西。 在Firefox中,相应的选项无效,视频在两种情况下都能正常播放。
以下是禁用缓存的请求标头(省略User-Agent和Cookie):
<video poster="...">
<source src="some/path/to/file.mp4" type="video/mp4">
</video>
启用缓存后,第一个请求的标头(返回206):
Host: localhost:9910
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept-Encoding: identity;q=1, *;q=0
Accept: */*
Referer: http://localhost:9910/
Accept-Language: en-US,en;q=0.8,ru;q=0.6,uk;q=0.4
Range: bytes=0-
第二个请求(返回200):
Host: localhost:9910
Connection: keep-alive
Accept-Encoding: identity;q=1, *;q=0
Accept: */*
Referer: http://localhost:9910/
Accept-Language: en-US,en;q=0.8,ru;q=0.6,uk;q=0.4
Range: bytes=0-
除了第一种情况下显而易见的Host: localhost:9910
Connection: keep-alive
Accept-Encoding: identity;q=1, *;q=0
Accept: */*
Referer: http://localhost:9910/
Accept-Language: en-US,en;q=0.8,ru;q=0.6,uk;q=0.4
Range: bytes=360448-393474
If-Range: Mon, 12 Jun 2017 13:07:36 GMT
和Pragma: no-cache
之外,很容易看出,在第三种情况下,Cache-Control: no-cache
标题的值不同,{{1}也是Range
标题已添加。我看了about it,但我仍然不明白究竟发生了什么:对这个第3个请求的回复包含If-Range
- 等于last-modified: Mon, 12 Jun 2017 13:07:36 GMT
值,所以,如果我理解正确地说,资源应该被认为是不变的,并且应该返回具有部分数据的规范206。
我对所有这些标题都不满意,所以我的问题是:
If-Range
的此请求?答案 0 :(得分:0)
好的,它是由服务器造成的。不知道我们的后端开发人员到底修正了什么,但至少它不是浏览器问题。
无论如何,仍然感兴趣的是,尽管所有请求都成功,视频仍然无法加载。开始玩可能缺少什么?