在Go中提供静态文件非常简单:
import (
"log"
"net/http"
)
func main() {
fs := http.FileServer(http.Dir("static"))
http.Handle("/", fs)
log.Println("Listening...")
http.ListenAndServe(":3000", nil)
}
但是在我的项目中,当用户请求HTML文件时,我需要为相关文件安装Server Push。在我的Java实现中,我有一个.link文件,其中列出了链接文件。例如:
index.html:
<html>
<head>
<link rel="stylesheet" type="text/css" href="/style.css" >
</head>
<body>
<img src="/sample.png">
</body>
</html>
index.html.link:
/sample.png
/style.css
当客户端要求提供 index.html 时,服务器将检查 index.html.link 是否存在,并且客户端支持http2 Server push,它将推送列在其中的文件 *。link 文件 如何使用FileServer实现这种功能以保持简单?
或者作为另一种选择,我可以使用Nginx反向代理,并按照here的说明向响应添加Link标头。
Link: </style.css>; as=style; rel=preload
Link: </sample.png>; as=image; rel=preload
还是有更好的解决方案?