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; 直接使用标签就行了.

results matching ""

    No results matching ""