gpt4 book ai didi

http - Golang HTTP 和文件缓存

转载 作者:数据小太阳 更新时间:2023-10-29 03:23:11 25 4
gpt4 key购买 nike

我有一个用 Go 编写的应用程序,它运行一个 HTTP 服务器并使用 http.ServeFile() 来提供每秒更新 3 次的文件;这是 HTTP 实时流的音频流索引文件,我需要在接近零延迟的情况下运行,因此需要频繁更新。我可以从我的 Go 服务器应用程序中的日志中看到,这个文件实际上每秒更新 3 次,每次更新时我都会在文件上调用 Sync() 以确保它被写入到磁盘。

我的问题是,在浏览器端 (Chrome),虽然这个文件每秒被请求多次,但实际上每秒只被提供一次;在所有其他情况下,服务器返回 304,表示文件未更改:

enter image description here

可能是什么导致了这种行为,我如何才能让文件在每次请求时都被提供?

最佳答案

正如评论中所述,事实证明 HTTP 中的修改时间检查的最小分辨率为 1 秒,因此,如果文件需要更频繁地更改并且服务器比这更频繁,最好自己从内存。例如,将它存储在一个名为 content 的 slice 中,并为该 slice 提供类似以下内容的服务:

http.ServeContent(w, r, filepath.Base(r.URL.Path), time.Time{}, bytes.NewReader(content))

关于http - Golang HTTP 和文件缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49544114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com