Skip to content

Commit

Permalink
Fix: fix links of header/footer of pages, and more (#80)
Browse files Browse the repository at this point in the history
  • Loading branch information
easbarba authored Aug 6, 2024
1 parent 552247e commit 5ef81c3
Show file tree
Hide file tree
Showing 66 changed files with 312 additions and 168 deletions.
4 changes: 2 additions & 2 deletions CHN/CHN-01-概述.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[English](/ENG/ENG-01-Overview) | [简体中文](/CHN/CHN-01-概述)
[English](/ENG/ENG-01-Overview)

**Drogon**是一个基于C++17/20的Http应用框架,使用Drogon可以方便的使用C++构建各种类型的Web应用服务端程序。

Expand Down Expand Up @@ -29,4 +29,4 @@ Drogon的主要应用平台是Linux,也支持Mac OS、FreeBSD和Windows。
* 支持插件,可通过配置文件在加载期动态拆装;
* 支持内建插入点的AOP

# 02 [安装drogon](/CHN/CHN-02-安装)
# 下一个: [安装drogon](/CHN/CHN-02-安装)
18 changes: 7 additions & 11 deletions CHN/CHN-02-安装.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[English](/ENG/ENG-02-Installation) | [简体中文](/CHN/CHN-02-安装)
[English](/ENG/ENG-02-Installation)

本节以Ubuntu 18.04, CentOS 7.5, MacOS 12.2为例,简介安装过程,其它系统,大同小异;
本节以Ubuntu 24.04, CentOS 7.5, MacOS 12.2为例,简介安装过程,其它系统,大同小异;

## 系统要求

Expand Down Expand Up @@ -29,16 +29,13 @@

## 系统准备范例

#### Ubuntu 18.04
#### Ubuntu 24.04

* 环境

```shell
sudo apt install git
sudo apt install gcc
sudo apt install g++
sudo apt install cmake
```
sudo apt install git gcc g++ cmake
```

* jsoncpp

Expand All @@ -61,8 +58,7 @@
* OpenSSL (可选,提供HTTPS支持)

```shell
sudo apt install openssl
sudo apt install libssl-dev
sudo apt install openssl libssl-dev
```


Expand Down Expand Up @@ -472,4 +468,4 @@ pip install conan
target_link_libraries(${PROJECT_NAME} PRIVATE drogon)
```

# 03 [快速开始](/CHN/CHN-03-快速开始)
# 下一个: [快速开始](/CHN/CHN-03-快速开始)
6 changes: 3 additions & 3 deletions CHN/CHN-03-快速开始.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[English](/ENG/ENG-03-Quick-Start) | [简体中文](/CHN/CHN-03-快速开始)
[English](/ENG/ENG-03-Quick-Start)

## 静态网站
# 静态网站

我们从一个最简单的例子开始,介绍drogon的使用,在这个例子中我们使用命令行工具`drogon_ctl`创建一个工程:

Expand Down Expand Up @@ -190,4 +190,4 @@ make

> **注意: Drogon没有限制控制器(controller)源文件的位置,也可以放在工程目录下,甚至可以在`CMakeLists.txt`中指定到新的目录中,为了方便管理,建议将控制器源文件放在controllers目录。**
# 04.0 [控制器简介](/CHN/CHN-04-0-控制器-简介)
# 下一个: [控制器简介](/CHN/CHN-04-0-控制器-简介)
6 changes: 4 additions & 2 deletions CHN/CHN-04-0-控制器-简介.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-04-0-Controller-Introduction) | [简体中文](/CHN/CHN-04-控制器-简介)
[English](/ENG/ENG-04-0-Controller-Introduction)

# 控制器(controller)

控制器(controller)在web应用开发中处于相当重要的地位,它处理浏览器发来的请求,然后生成响应发送给浏览器;drogon框架已经帮我们处理好网络传输、Http协议的解析等等细节,我们只需要关注控制器的逻辑即可;每一个控制器对象可以有一个或者多个处理函数(一般称为handler),函数的接口,一般定义成如下形式:

Expand Down Expand Up @@ -33,4 +35,4 @@ public:

注册到drogon框架的控制器最多只会有一个实例,在整个应用运行期间都不会销毁,所以,用户可以在控制器类中声明和使用成员变量。注意,控制器的handler被调用时,是在多线程环境下的(当框架的IO线程数配置成大于1的值时),如果需要访问非临时变量,请做好并发保护工作。

# 04.1 [HttpSimpleController](/CHN/CHN-04-1-控制器-HttpSimpleController)
# 下一个: [HttpSimpleController](/CHN/CHN-04-1-控制器-HttpSimpleController)
6 changes: 4 additions & 2 deletions CHN/CHN-04-1-控制器-HttpSimpleController.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-04-1-Controller-HttpSimpleController) | [简体中文](/CHN/CHN-04-1-控制器-HttpSimpleController)
[English](/ENG/ENG-04-1-Controller-HttpSimpleController)

# 可以由 drogon_ctl

可以由`drogon_ctl`命令行工具快速生成基于`HttpSimpleController`的自定义类的源文件,命令格式如下:

Expand Down Expand Up @@ -64,4 +66,4 @@ void TestCtrl::asyncHandleHttpRequest(const HttpRequestPtr &req,

> **上述路径到处理函数的映射是在编译期完成的,事实上,drogon框架也提供了运行期完成映射的接口,运行期映射可以让用户通过配置文件或其它用户接口完成映射或修改映射关系而无需重新编译这个程序(出于性能的考虑,禁止在运行app().run()之后再注册任何映射)。**
# 04.2 [HttpController](/CHN/CHN-04-2-控制器-HttpController)
# 下一个: [HttpController](/CHN/CHN-04-2-控制器-HttpController)
6 changes: 3 additions & 3 deletions CHN/CHN-04-2-控制器-HttpController.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[English](/ENG/ENG-04-2-Controller-HttpController) | [简体中文](/CHN/CHN-04-2-控制器-HttpController)
[English](/ENG/ENG-04-2-Controller-HttpController)

### 生成
# 生成

可以由`drogon_ctl`命令行工具快速生成基于`HttpController`的自定义类的源文件,命令格式如下:

Expand Down Expand Up @@ -280,4 +280,4 @@ void User::getInfo(const HttpRequestPtr &req,
> **需要注意的是,使用正则表达式要注意匹配冲突(多个不同的handler都匹配),当冲突发生在同一个controller内部时,drogon只会执行第一个handler(先注册进框架的那个handler),当冲突发生在不同controller之间时,执行哪个handler是不确定的,因此用户需要避免这种冲突发生。**
# 04.3 [WebSocketController](/CHN/CHN-04-3-控制器-WebSocketController)
# 下一个: [WebSocketController](/CHN/CHN-04-3-控制器-WebSocketController)
4 changes: 2 additions & 2 deletions CHN/CHN-04-3-控制器-WebSocketController.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[English](/ENG/ENG-04-3-Controller-WebSocketController) | [简体中文](/CHN/CHN-04-3-控制器-WebSocketController)
[English](/ENG/ENG-04-3-Controller-WebSocketController)

顾名思义,`WebSocketController`用于处理websocket逻辑。websocket是基于HTTP的一种长连接方案,在websocket建立之初,有一次HTTP格式的请求和应答交换,建立完成后,所有的消息在websocket上传输,消息由固定的格式包装,但消息的内容和收发次序没有任何要求,完全由用户定义。

Expand Down Expand Up @@ -148,4 +148,4 @@ void EchoWebsock::handleConnectionClosed(const WebSocketConnectionPtr &wsConnPtr
any *getMutableContext();
```
# 05 [中间件和过滤器](/CHN/CHN-05-中间件和过滤器)
# 下一个: [中间件和过滤器](/CHN/CHN-05-中间件和过滤器)
6 changes: 4 additions & 2 deletions CHN/CHN-05-中间件和过滤器.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-05-Middleware-and-Filter) | [简体中文](/CHN/CHN-05-中间件和过滤器)
[English](/ENG/ENG-05-Middleware-and-Filter)

# 中间件

中间件(middleware)和过滤器(filter)可以帮助用户提高编程效率,在HttpController的[例子](/CHN/CHN-04-2-控制器-HttpController)中,getInfo方法在返回用户信息之前应该先校验用户是否登录,我们把这个逻辑写在getInfo方法里当然是可以的,但是,很显然,校验用户登录属于通用逻辑,很多接口都将用到,应该把它单独提取出来,再配置到调用handler之前,这就是filter的作用。

Expand Down Expand Up @@ -98,4 +100,4 @@ drogon内置了如下常用过滤器:
> **注意: 如果中间件/过滤器定义在命名空间里,注册时必须把命名空间写全**
# 06 [视图](/CHN/CHN-06-视图)
# 下一个: [视图](/CHN/CHN-06-视图)
6 changes: 3 additions & 3 deletions CHN/CHN-06-视图.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[English](/ENG/ENG-06-View) | [简体中文](/CHN/CHN-06-视图)
[English](/ENG/ENG-06-View)

### 视图介绍
# 视图介绍

虽然目前前端渲染技术大行其道,使后端应用服务只需要返回相应数据给前端即可,不过,一个好的web框架还是应该提供后端渲染技术,使服务端程序可以动态生成HTML页面。视图(View)可以帮助使用者生成这些页面,顾名思义,它只负责做跟展示相关的工作,而复杂的业务逻辑都应该交给控制器完成。

Expand Down Expand Up @@ -155,4 +155,4 @@ void enableDynamicViewsLoading(const std::vector<std::string> &libPaths);
> **注意: 如果加载时遇到`symbol not found`错误,请使用`cmake .. -DCMAKE_ENABLE_EXPORTS=on`或取消CMakeLists.txt最后一行对`set_property(TARGET ${PROJECT_NAME} PROPERTY ENABLE_EXPORTS ON)`的注释,并重新编译你的工程**
# 07 [会话](/CHN/CHN-07-会话)
# 下一个: [会话](/CHN/CHN-07-会话)
6 changes: 4 additions & 2 deletions CHN/CHN-07-会话.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-07-Session) | [简体中文](/CHN/CHN-07-会话)
[English](/ENG/ENG-07-Session)

# 会话(Session)

`会话(Session)`是web应用的重要概念,用于在服务端保存客户端的状态,一般和浏览器的`cookie`配合,drogon提供了对会话的支持。drogon默认**关闭**会话选择,你也可以通过如下接口关闭或打开:

Expand Down Expand Up @@ -97,4 +99,4 @@ drogon::HttpAppFramework::instance().enableSession(1200);
用cmake重新编译整个工程,运行目标程序webapp,就可以通过浏览器看到效果了。
# [数据库](/CHN/CHN-08-0-数据库-概述)
# 下一个: [数据库](/CHN/CHN-08-0-数据库-概述)
6 changes: 3 additions & 3 deletions CHN/CHN-08-0-数据库-概述.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[English](/ENG/ENG-08-0-Database-General) | [简体中文](/CHN/CHN-08-0-数据库-概述)
[English](/ENG/ENG-08-0-Database-General)

### 概述
# 概述

**Drogon**内置了数据库读写引擎,对数据库连接的操作基于non-blocking I/O技术实现,因此,从底层到上层接口,都是高效率的非阻塞异步方式,保证了Drogon对高并发性能的追求。目前,Drogon支持PostgreSQL和MySQL数据库,如果要使用数据库,开发系统必须先安装相应数据库的开发环境,Drogon会自动探测这些库的头文件和库文件,编译相应的部分。数据库开发环境的准备,参见[安装数据库环境](/CHN/CHN-02-安装#数据库环境)

Expand All @@ -24,4 +24,4 @@ Drogon的数据库基本操作对象是`DbClient`(这是一个抽象类,用户

Drogon也提供了对**ORM**的支持,用户可以通过drogon_ctl读取数据库中的表,并生成对应的model对象类源码,然后,通过`Mapper<MODEL>`类模板完成这些对象的数据库操作,为标准的数据操作提供了简单便捷的接口,使用户可以不用自己写sql语句就可以完成对表的增删改查。关于**ORM**,请参阅[ORM](/CHN/CHN-08-3-数据库-ORM)

# 08.1 [DbClient](/CHN/CHN-08-1-数据库-DbClient)
# 下一个: [DbClient](/CHN/CHN-08-1-数据库-DbClient)
6 changes: 3 additions & 3 deletions CHN/CHN-08-1-数据库-DbClient.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[English](/ENG/ENG-08-1-Database-DbClient) | [简体中文](/CHN/CHN-08-1-数据库-DbClient)
[English](/ENG/ENG-08-1-Database-DbClient)

### 构建DbClient
# 构建 DbClient

构造DbClient对象有两种途径,一个是通过DbClient类的静态方法,在DbClient.h头文件可以看到定义,如下:

Expand Down Expand Up @@ -252,4 +252,4 @@ internal::SqlBinder operator<<(const std::string &sql);
它虽然也提供阻塞的接口,这种接口只是阻塞调用者线程,只要调用者线程不是EventLoop线程,就不会影响EventLoop线程的正常运转。回调函数被调用时,回调内的程序是运行在EventLoop线程的,所以,不要在回调内部进行任何阻塞操作,否则会影响数据库的并发,熟悉non-blocking I/O编程的人都应该明白这个约束。
# 08.2 [事务](/CHN/CHN-08-2-数据库-事务)
# 下一个: [事务](/CHN/CHN-08-2-数据库-事务)
6 changes: 4 additions & 2 deletions CHN/CHN-08-2-数据库-事务.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-08-2-Database-Transaction) | [简体中文](/CHN/CHN-08-2-数据库-事务)
[English](/ENG/ENG-08-2-Database-Transaction)

# 数据库 - 事务

> **事务**是关系型数据库的重要特性,Drogon通过`Transaction`类提供了对事务的支持。
Expand Down Expand Up @@ -83,4 +85,4 @@ void newTransactionAsync(const std::function<void(const std::shared_ptr<Transact

本例中使用select for update避免并发修改,update语句在select语句的结果回调中完成,进行了一次嵌套,最外层的大括号是为了限定transPtr的作用范围,使之在执行完sql后及时的销毁从而结束事务。

# 08.3 [ORM](/CHN/CHN-08-3-数据库-ORM)
# 下一个: [ORM](/CHN/CHN-08-3-数据库-ORM)
6 changes: 4 additions & 2 deletions CHN/CHN-08-3-数据库-ORM.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-08-3-Database-ORM) | [简体中文](/CHN/CHN-08-3-数据库-ORM)
[English](/ENG/ENG-08-3-Database-ORM)

# 数据库 - ORM

### Model

Expand Down Expand Up @@ -288,4 +290,4 @@ drogon_ctl还可以在创建model的同时,为每个model(或者说表)生

鉴于这个功能不是那么被普遍需要,这里不做详细介绍了。

# 08.4 [FastDbClient](/CHN/CHN-08-4-数据库-FastDbClient)
# 下一个: [FastDbClient](/CHN/CHN-08-4-数据库-FastDbClient)
6 changes: 4 additions & 2 deletions CHN/CHN-08-4-数据库-FastDbClient.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-08-4-Database-FastDbClient) | [简体中文](/CHN/CHN-08-4-数据库-FastDbClient)
[English](/ENG/ENG-08-4-Database-FastDbClient)

# 数据库 - FastDbClient

顾名思义,FastDbClient会提供比普通的DbClient更高的性能。与DbClient拥有自己的EventLoop不同,它和Web应用的网络IO线程和主线程共用 EventLoop,这使得FastDbClient的内部实现可以采用无锁的方式进行,因而会更高效。

Expand Down Expand Up @@ -30,4 +32,4 @@ FastDbClient的使用与普通的DbClient几乎完全一致,除了下面这些
* 同步的事务创建接口是有可能阻塞的(所有连接都忙的时候),所以FastDbClient的同步事务创建接口直接返回空指针,如果要在FastDbClient上使用事务,请使用异步的事务创建接口。
* 使用FastDbClient创建Orm的Mapper对象后,使用时也要注意只能使用异步非阻塞接口。
# 08.5 [自动批处理](/CHN/CHN-08-3-数据库-自动批处理)
# 下一个: [自动批处理](/CHN/CHN-08-5-数据库-自动批处理)
6 changes: 4 additions & 2 deletions CHN/CHN-08-5-数据库-自动批处理.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-08-5-Database-auto_batch) | [简体中文](/CHN/CHN-08-3-数据库-自动批处理)
[English](/ENG/ENG-08-5-Database-auto_batch)

# 数据库 - 自动批处理

自动批处理模式只对postgresql 14+版本的客户端库有效,其他情况下会被忽略,讲自动批处理之前,先了解一下pipeline模式。

Expand Down Expand Up @@ -33,4 +35,4 @@ drogon在1.7.6版本之后开始支持,drogon会自动检查libpq是否支持p
当使用newPgClient接口创建客户端时,把第三个参数设为true即可使能自动批处理模式;
当使用配置文件创建客户端时,把auto_batch选项设为true即可使能该客户端的自动批处理模式;

# 09 [插件](/CHN/CHN-09-插件)
# 下一个: [参考资料 - 请求](/CHN/CHN-09-0-参考资料-请求)
6 changes: 6 additions & 0 deletions CHN/CHN-09-0-参考资料-请求.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[English](/ENG/ENG-09-0-References-request)

# 参考资料-请求

# 下一个: [文件处理程序](/CHN/CHN-09-1-文件处理程序)

5 changes: 5 additions & 0 deletions CHN/CHN-09-1-文件处理程序.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[English](/ENG/ENG-09-1-File-Handler)

# 文件处理程序

# 下一个: [插件](/CHN/CHN-10-插件)
6 changes: 4 additions & 2 deletions CHN/CHN-09-插件.md → CHN/CHN-10-插件.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-10-Plugins) | [简体中文](/CHN/CHN-09-插件)
[English](/ENG/ENG-10-Plugins)

# 插件

插件可以帮助用户构建复杂的应用,在Drogon中,所有的插件都由框架根据配置文件统一构建并安装到应用程序中。Drogon中的插件都是单实例的,用户可以用插件实现任何他们想要的功能。

Expand Down Expand Up @@ -76,4 +78,4 @@ auto *pluginPtr=app().getPlugin<DataDictionary>();

所有插件在run()接口内初始化完毕,在应用程序退出时才销毁,因此,插件的生命周期几乎和应用程序等同,这也是getPlugin()接口不需要返回智能指针的原因。

# 10 [配置文件](/CHN/CHN-10-配置文件)
# 下一个: [配置文件](/CHN/CHN-11-配置文件)
6 changes: 4 additions & 2 deletions CHN/CHN-10-配置文件.md → CHN/CHN-11-配置文件.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-11-Configuration-File) | [简体中文](/CHN/CHN-10-配置文件)
[English](/ENG/ENG-11-Configuration-File)

# 配置文件

你可以通过DrogonAppFramework实例的多个接口配置各种参数来控制Http服务端的某些行为。不过,使用配置文件是更好的方式,原因如下:

Expand Down Expand Up @@ -355,4 +357,4 @@ int main()
"pipelining_requests": 0
```

# 11 [drogon_ctl 命令](/CHN/CHN-11-drogon_ctl命令)
# 下一个: [drogon_ctl 命令](/CHN/CHN-12-drogon_ctl命令)
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-12-drogon_ctl-Command) | [简体中文](/CHN/CHN-11-drogon_ctl命令)
[English](/ENG/ENG-12-drogon_ctl-Command)

# drogon_ctl

**Drogon**框架编译安装后,一个命令行程序 `drogon_ctl` 也同时被安装于系统,为了方便,还安装了一个完全一样的副本 `dg_ctl`。用户可以按喜好自行选用。

Expand Down Expand Up @@ -169,4 +171,4 @@ dg_ctl press -n1000000 -t4 -c1000 -q http://localhost:8080/
dg_ctl press -n 1000000 -t 4 -c 1000 https://www.domain.com/path/to/be/tested
```

# 12 [AOP 面向切面编程](/CHN/CHN-12-AOP面向切面编程)
# 下一个: [AOP 面向切面编程](/CHN/CHN-13-AOP面向切面编程)
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
[English](/ENG/ENG-13-AOP-Aspect-Oriented-Programming)
| [简体中文](/CHN/CHN-12-AOP面向切面编程)

## 面向切面编程 - AOP

AOP(面向切面编程)是实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

Expand All @@ -26,4 +27,4 @@ Drogon提供了7个插入点供用户使用,当应用程序运行至插入点

![](images/AOP.png)

# 13 [性能测试](/CHN/CHN-13-性能测试)
# 下一个: [性能测试](/CHN/CHN-14-性能测试)
6 changes: 4 additions & 2 deletions CHN/CHN-13-性能测试.md → CHN/CHN-14-性能测试.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-14-Benchmarks) | [简体中文](/CHN/CHN-13-性能测试)
[English](/ENG/ENG-14-Benchmarks)

## 性能测试

作为C++的Http应用框架,性能应该是关注的重点之一,本节介绍Drogon的简单测试和成绩;

Expand Down Expand Up @@ -45,4 +47,4 @@ void BenchmarkCtrl::asyncHandleHttpRequest(const HttpRequestPtr &req, std::funct
![测试截图](images/benchmark.png)
# 14 [Coz 分析](/CHN/CHN-14-Coz分析)
# 下一个: [Coz 分析](/CHN/CHN-15-Coz分析)
6 changes: 3 additions & 3 deletions CHN/CHN-14-Coz分析.md → CHN/CHN-15-Coz分析.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[English](/ENG/ENG-15-Coz) | [简体中文](/CHN/CHN-14-Coz分析)
[English](/ENG/ENG-15-Coz)

## 使用coz进行因果分析
# 分析 - Coz

使用coz,您可以分析两件事:

Expand All @@ -23,4 +23,4 @@ Coz还支持使用 `--source-scope <pattern>` 或 `-s <pattern>` 等其他方法
- [Git repo](https://github.com/plasma-umass/coz)
- [Coz whitepaper](https://arxiv.org/pdf/1608.03676v1.pdf)

# 15 [Brotli 压缩](/CHN/CHN-15-Brotil-压缩)
# 下一个: [Brotli 压缩](/CHN/CHN-16-Brotli压缩)
6 changes: 3 additions & 3 deletions CHN/CHN-15-Brotli压缩.md → CHN/CHN-16-Brotli压缩.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[English](/ENG/ENG-16-Brotli) | [简体中文](/CHN/CHN-15-Brotli压缩)
[English](/ENG/ENG-16-Brotli)

## Brotli压缩
# 压缩 - Brotli

如果存在相应的brotli压缩文件,Drogon开箱即用地支持这些brotli静态压缩文件。

Expand All @@ -12,4 +12,4 @@

不打算使用brotli静态压缩的用户,可能希望摆脱brotli额外的“同名文件检查”,可通过在“config.json”中将“br_static”设置为“false”。

# 16 [协程]](/CHN/CHN-16-协程)
# 下一个: [协程](/CHN/CHN-17-协程)
6 changes: 4 additions & 2 deletions CHN/CHN-16-协程.md → CHN/CHN-17-协程.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-17-Coroutines) | [简体中文](/CHN/CHN-16-协程)
[English](/ENG/ENG-17-Coroutines)

# 协程

Drogon从1.4版本开始支持[C++ coroutines][1](协程)。 它提供了扁平化异步执行控制流的方法, 比如,避免著名的`回调地狱callback hell`. 通过协程, 异步编程将像同步编程一样简单(同时保持了异步程序的高性能)。

Expand Down Expand Up @@ -166,4 +168,4 @@ app.registerHandler("/num_users",

[1]: https://en.cppreference.com/w/cpp/language/coroutines

# 17 [Redis](/CHN/CHN-17-Redis)
# 下一个: [Redis](/CHN/CHN-18-Redis)
6 changes: 4 additions & 2 deletions CHN/CHN-17-Redis.md → CHN/CHN-18-Redis.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[English](/ENG/ENG-18-Redis) | [简体中文](/CHN/CHN-17-Redis)
[English](/ENG/ENG-18-Redis)

# Redis

Drogon支持Redis,Redis是一种非常快速的内存数据存储。 可以用作数据库缓存或消息代理。 与Drogon中其他组件一樣,Redis的操作是异步的。 这确保了Drogon即使在重负载下也能以非常高的并发性运行。

Expand Down Expand Up @@ -117,4 +119,4 @@ catch(const std::exception& e)
}
```

# [测试框架](/CHN/CHN-18-测试框架)
# 下一个: [测试框架](/CHN/CHN-19-测试框架)
Loading

0 comments on commit 5ef81c3

Please sign in to comment.