Go语言Web: Markdown轮打与缓存处理
如何发送markdown内容,如何使用缓存处理响应
// file markdown-cache.go
package main
import (
"time"
"gopkg.in/kataras/iris.v6"
"gopkg.in/kataras/iris.v6/adaptors/httprouter"
)
var testMarkdownContents = `## Hello Markdown
This is a sample of Markdown contents
#概述
--------
##设计理念
**Markdown 致力于使阅读和创作文档变得容易.
**Markdown 视可读性为最高准则. Markdown 文件应该以纯文本形式原样发布, 不应该包含标记标签和格式化指令. 尽管 Markdown 的语法受到了以下这些 text-to-HTML 过滤器的影响 -- 包括 Setext, atx, Textile, reStructuredText, Grutatext, 还有 EtText -- 但是 Markdown 语法灵感最大的来源还是纯文本 email 的格式.
**基于以上背景, Markdown 完全由标点符号组成, 这些标点经过仔细挑选以使他们看上去和表达的含义相同. 例如, 星号标记的单词就像 *强调*. 列表就像是列表. 如果你使用过 email 的话, 就连块引用都像引用的文本段落.
##内联 HTML
**Markdown 是用于 创作 web 文档的.
**Markdown 从来都不是要取代 HTML . 它的语法集非常小, 只对应一小部分 HTML 标签. 它要做的 不是 创造一种新的语法以使插入 HTML 标签变得更容易. 在我看来, HTML 标签已经很容易插入了. Markdown 的目标是易于阅读, 创作和编辑文章. HTML 是一种 发布 格式; Markdown 是一种 创作 格式. 因此, Markdown 处理的都是纯文本.
**对于 Markdown 中未包含的标签, 可以直接使用 HTML. 没有必要使用定界符或标识符来表明从 Markdown 切换到 HTML; 直接使用标签就行了.
[this is a link](https://github.com/kataras/iris) `
func main() {
app := iris.New()
// os.Stdout输出启动标语和错误记录
app.Adapt(iris.DevLogger())
// 设置路由,你也可以选择gorillamux
app.Adapt(httprouter.New())
app.Get("/hi", app.Cache(func(c *iris.Context) {
c.WriteString("喂,这是大内容,不要缓存小内容,因为小内容看不到任何显著效果")
}, time.Duration(10)*time.Second))
bodyHandler := func(ctx *iris.Context) {
ctx.Markdown(iris.StatusOK, testMarkdownContents)
}
expiration := time.Duration(5 * time.Second)
app.Get("/", app.Cache(bodyHandler, expiration))
// if expiration is <=time.Second then the cache tries to set the expiration from
// the "cache-control" maxage header's value(in seconds)
// // if this header doesn't founds then the default is 5 minutes
app.Get("/cache_control", app.Cache(func(ctx *iris.Context) {
ctx.HTML(iris.StatusOK, "<h1>Hello!</h1>")
}, -1))
app.Listen(":8080")
}
$ go run markdown-cache.go
Hello Markdown
This is a sample of Markdown contents
概述
Markdown 致力于使阅读和创作文档变得容易.
Markdown 视可读性为最高准则. Markdown 文件应该以纯文本形式原样发布, 不应该包含标记标签和格式化指令. 尽管 Markdown 的语法受到了以下这些 text-to-HTML 过滤器的影响 -- 包括 Setext, atx, Textile, reStructuredText, Grutatext, 还有 EtText -- 但是 Markdown 语法灵感最大的来源还是纯文本 email 的格式.
基于以上背景, Markdown 完全由标点符号组成, 这些标点经过仔细挑选以使他们看上去和表达的含义相同. 例如, 星号标记的单词就像 *强调*. 列表就像是列表. 如果你使用过 email 的话, 就连块引用都像引用的文本段落.
内联 HTML
Markdown 是用于 创作 web 文档的.
Markdown 从来都不是要取代 HTML . 它的语法集非常小, 只对应一小部分 HTML 标签. 它要做的 不是 创造一种新的语法以使插入 HTML 标签变得更容易. 在我看来, HTML 标签已经很容易插入了. Markdown 的目标是易于阅读, 创作和编辑文章. HTML 是一种 发布 格式; Markdown 是一种 创作 格式. 因此, Markdown 处理的都是纯文本.
对于 Markdown 中未包含的标签, 可以直接使用 HTML. 没有必要使用定界符或标识符来表明从 Markdown 切换到 HTML; 直接使用标签就行了.