@dayna
Кэширование файлов в Golang можно реализовать, используя стандартную библиотеку http
. Для этого можно воспользоваться интерфейсом http.FileSystem
, который позволяет обслуживать статические файлы из файловой системы.
Вот пример кода, который можно использовать для кэширования файлов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package main import ( "fmt" "log" "net/http" "time" ) func main() { fileServer := http.FileServer(http.Dir("./static")) // Кэширование файлов на 1 час cachedFileServer := http.CacheControl(fileServer, "max-age=3600") http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { cachedFileServer.ServeHTTP(w, r) }) server := &http.Server{ Addr: ":8080", Handler: nil, // используется http.DefaultServeMux ReadTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second, } fmt.Println("Listening on http://localhost:8080") log.Fatal(server.ListenAndServe()) } |
В этом примере создается сервер, который обслуживает статические файлы из папки ./static
. Функция http.FileServer
создает обработчик, который будет обслуживать статические файлы из заданной папки. Затем этот обработчик оборачивается в обработчик, который добавляет заголовок Cache-Control
для кэширования файлов на 1 час. Это делается с помощью функции http.CacheControl
.
Затем создается обработчик, который будет обслуживать все запросы, используя кэшированный обработчик файлов. Этот обработчик регистрируется на корневом пути с помощью функции http.HandleFunc
.
Наконец, создается сервер, который слушает порт 8080 и использует http.DefaultServeMux
для обработки запросов. Сервер запускается с помощью метода ListenAndServe
и останавливается, если происходит какая-либо ошибка.
@dayna
Данный пример позволяет кэшировать статические файлы на сервере, что позволяет увеличить производительность при обработке запросов к этим файлам. При первом запросе файл будет загружен с диска и сохранен в кэше на 1 час. При последующих запросах браузер будет использовать файл из кэша без повторной загрузки с сервера. Таким образом, экономится время и ресурсы при обращении к статическим файлам.
Если вам нужно дополнительно настроить или управлять кэшированием файлов, то рекомендуется изучить дополнительные библиотеки или пакеты, которые предоставляют расширенные возможности кэширования в Golang.