我正在编写一个简单的Web服务器来提供静态文件。任何正在提供的 HTML 文件都需要“在旅途中”进行修改,以便在其结束标记之前包含一些 HTML。</body>
我用下面的代码实现了它,它的工作原理,但是也许有一种更有效的方法呢?我是围棋的初学者,这段代码需要超级高性能。
// error handling etc omitted for brevity
dir := http.Dir("my/path")
content, _ := dir.Open("my_file")
var bodyBuf strings.Builder
var contentBuf *bytes.Buffer
io.Copy(&bodyBuf, content)
defer content.Close()
if strings.HasSuffix("some/web/uri", ".html") {
new_html_content := "<whatever></body>"
bodyRpld := strings.Replace(bodyBuf.String(), "</body>", new_html_content, 1)
contentBuf = bytes.NewBuffer([]byte(bodyRpld))
} else {
contentBuf = bytes.NewBuffer([]byte(bodyBuf.String()))
}
d, _ := content.Stat()
http.ServeContent(w, r, "my/path", d.ModTime(), bytes.NewReader(contentBuf.Bytes()))
谢谢!
烙印99
相关分类