为了账号安全,请及时绑定邮箱和手机立即绑定

如何动态更改http服务器的静态文件目录?

如何动态更改http服务器的静态文件目录?

Go
呼如林 2022-09-19 17:37:27
我有以下代码段,它从静态文件目录() 提供静态文件:staticFilesDirfor _, prefix := range []string{"css", "img", "js", "static"} {    prefix = "/" + prefix + "/"    fs := http.FileServer(http.Dir(staticFilesDir + prefix))    r.PathPrefix(prefix).Handler(http.StripPrefix(prefix, fs))}此目录会不时更改,目前我总是需要重新启动服务器进程才能使用新值。如何在不重新启动整个过程的情况下重新配置/重新加载 ?FileServer更复杂的是:http服务器的其他处理程序正在执行长时间运行的作业(包括子进程等),我希望在重新加载期间保持不变。这个非常典型的任务的标准解决方案是什么?
查看完整描述

1 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

您可以在以下两者之间添加间接层:


type MyFileServer struct {

   sync.RWMutex

   http.FileServer

}


func (f *MyFileServer) SetDir(dir string) {

    f.Lock()

    defer f.Unlock()

    f.FileServer=http.FileServer(dir)

}



func (f *MyFileServer) ServeHTTP(w http.ResponseWriter,req *http.Request) {

   f.RLock()

   defer f.RUnlock()

   f.FileServer.ServeHTTP(w,req)

}


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信