Обслуживание статического файла в Go довольно просто:
import (
"log"
"net/http"
)
func main() {
fs := http.FileServer(http.Dir("static"))
http.Handle("/", fs)
log.Println("Listening...")
http.ListenAndServe(":3000", nil)
}
Но в моем проекте мне нужно иметь Server Push для связанных файлов, когда пользователь запрашивает файлы HTML.В моей реализации 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 Push, он отправляет файлы, перечисленные в *. link file Как реализовать такую функцию с помощью FileServer, чтобы упростить задачу?
Или, как еще один вариант, я могу использовать обратный прокси-сервер Nginx и добавить заголовок Link к ответам, как объяснено здесь .
Link: </style.css>; as=style; rel=preload
Link: </sample.png>; as=image; rel=preload
Или есть лучшее решение?