mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-13 06:50:25 +08:00
修复特殊页面无法缓存的Bug
This commit is contained in:
@@ -40,13 +40,28 @@ func (this *HTTPRequest) doPage(status int) (shouldStop bool) {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stat, err := fp.Stat()
|
||||||
|
if err != nil {
|
||||||
|
logs.Error(err)
|
||||||
|
msg := "404 could not read page content: '" + page.URL + "'"
|
||||||
|
|
||||||
|
this.writer.WriteHeader(http.StatusNotFound)
|
||||||
|
_, err := this.writer.Write([]byte(msg))
|
||||||
|
if err != nil {
|
||||||
|
logs.Error(err)
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// 修改状态码
|
// 修改状态码
|
||||||
if page.NewStatus > 0 {
|
if page.NewStatus > 0 {
|
||||||
// 自定义响应Headers
|
// 自定义响应Headers
|
||||||
this.processResponseHeaders(page.NewStatus)
|
this.processResponseHeaders(page.NewStatus)
|
||||||
|
this.writer.Prepare(stat.Size(), page.NewStatus)
|
||||||
this.writer.WriteHeader(page.NewStatus)
|
this.writer.WriteHeader(page.NewStatus)
|
||||||
} else {
|
} else {
|
||||||
this.processResponseHeaders(status)
|
this.processResponseHeaders(status)
|
||||||
|
this.writer.Prepare(stat.Size(), status)
|
||||||
this.writer.WriteHeader(status)
|
this.writer.WriteHeader(status)
|
||||||
}
|
}
|
||||||
buf := bytePool1k.Get()
|
buf := bytePool1k.Get()
|
||||||
@@ -69,17 +84,21 @@ func (this *HTTPRequest) doPage(status int) (shouldStop bool) {
|
|||||||
|
|
||||||
return true
|
return true
|
||||||
} else if page.BodyType == shared.BodyTypeHTML {
|
} else if page.BodyType == shared.BodyTypeHTML {
|
||||||
|
var content = this.Format(page.Body)
|
||||||
|
|
||||||
// 修改状态码
|
// 修改状态码
|
||||||
if page.NewStatus > 0 {
|
if page.NewStatus > 0 {
|
||||||
// 自定义响应Headers
|
// 自定义响应Headers
|
||||||
this.processResponseHeaders(page.NewStatus)
|
this.processResponseHeaders(page.NewStatus)
|
||||||
|
this.writer.Prepare(int64(len(content)), page.NewStatus)
|
||||||
this.writer.WriteHeader(page.NewStatus)
|
this.writer.WriteHeader(page.NewStatus)
|
||||||
} else {
|
} else {
|
||||||
this.processResponseHeaders(status)
|
this.processResponseHeaders(status)
|
||||||
|
this.writer.Prepare(int64(len(content)), status)
|
||||||
this.writer.WriteHeader(status)
|
this.writer.WriteHeader(status)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err := this.writer.WriteString(this.Format(page.Body))
|
_, err := this.writer.WriteString(content)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !this.canIgnore(err) {
|
if !this.canIgnore(err) {
|
||||||
remotelogs.Warn("HTTP_REQUEST_PAGE", "write to client failed: "+err.Error())
|
remotelogs.Warn("HTTP_REQUEST_PAGE", "write to client failed: "+err.Error())
|
||||||
|
|||||||
Reference in New Issue
Block a user