如何使go fasthttp服务器在文件上载时更快地触发处理程序?
我对文件服务器项目使用如何使go fasthttp服务器在文件上载时更快地触发处理程序?,go,fasthttp,Go,Fasthttp,我对文件服务器项目使用fasthttp。文件服务器具有上载功能。对于上载文件,我将键作为URL查询传递,以验证上载权限 主体() requestHandler函数: func requestHandler(ctx *fasthttp.RequestCtx) { switch string(ctx.Path()) { case "/uploadx": log.Println("Upload: ["+ctx.RemoteIP().String()+"] ["+
fasthttp
。文件服务器具有上载功能。对于上载文件,我将键作为URL查询传递,以验证上载权限
主体()
requestHandler函数:
func requestHandler(ctx *fasthttp.RequestCtx) {
switch string(ctx.Path()) {
case "/uploadx":
log.Println("Upload: ["+ctx.RemoteIP().String()+"] ["+string(ctx.Path())+"]")
}
}
我上传了一个大文件,不幸的是,当文件上传过程完成时,requestHandler
被触发。
但它应该在上传过程开始时触发,因为我想避免有人在没有检查权限的情况下先上传500MB的文件
有没有办法让requestHandler触发得更快?在上传过程开始时
服务器本身接收到HTTP请求的第一部分,所以最大的问题是,为什么fasthttp
触发requestHandler
这么晚
我现在尝试了net/http
:
mux.HandleFunc("/upload", uploadFile)
func uploadFile(w http.ResponseWriter, r *http.Request) {
fmt.Println("File Upload Endpoint Hit")
fmt.Println(r)
}
使用net/http
我在文件上传开始时就收到了文件上传端点命中
——与要求完全相同,但我更喜欢使用fasthttp
我做错什么了吗?
感谢大文件上传,浏览器发送Expect:100 continue标头询问服务器是否可以继续上传。您可以使用检查权限并允许或拒绝上载
Fasthttp将始终在调用处理程序之前读取完整响应。这允许使用更少的分配实现更高性能的API。问题是浏览器需要发送Expect:100 continue
否则在完成完全上传之前,检查上传者权限的情况将永远不会发生。我使用JS XHR上传文件。我用GB文件试过了,没有100个文件可以继续。好的,我现在可以实现它并检查它。但是我不需要检查用户的权限,这些用户无论如何都在成员区域中。更重要的是检查用户试图攻击服务器时的权限,并且用户未登录。因此,如果那些用户的浏览器不发送100个文件,他们将上载GB的文件。在这种情况下,恐怕fasthttp不适合您。出于性能原因,fasthttp总是在调用处理程序之前将全文读入内存(或将文件上载到文件)。这可能不会很快改变。是的,这也是我的结论,这就是为什么我转到net/http
fasthttp
是一个很棒的软件包,使用起来更舒适,这就是我问这个问题的原因,我希望有办法。
mux.HandleFunc("/upload", uploadFile)
func uploadFile(w http.ResponseWriter, r *http.Request) {
fmt.Println("File Upload Endpoint Hit")
fmt.Println(r)
}