分类: LINUX
2015-11-30 10:26:37
Filters are used internally by Apache to perform functions such as chunking and byte-range request handling. In addition, modules can provide filters that are selectable using run-time configuration directives. The set of filters that apply to data can be manipulated with the SetInputFilter, SetOutputFilter, AddInputFilter, AddOutputFilter, RemoveInputFilter, and RemoveOutputFilter directives.
数据的输入和输出:
过滤器所加工的数据,存储在一种称为 桶 bucket 的容器中。 bucket 的实际存储可以是 文件\管道(pipe)\流(socket stream )堆内存(heap)甚至是栈内存(stack)。apache 提供了apr_bucket_read 方法,将 bucket 中的数据读取到用户指定的内存中。apchet 也提供了数据在不同类型的 bucket 之间传递的的手段。除了常规的 apr_bucket_copy 外,还提供了
1、强制过滤器(SetInputFilter, SetOutputFilter)。例如,在输出 http页面时,强制在每个页面加入页底的版权信息。
2、选择性过滤器。分为按扩展名过滤(AddHandler),按MIME类型过滤(AddInputFilter)
3、过滤器内部参数过滤。例如下面介绍的 CaseFilter。
过滤器使用 ap_register_output_filter 进行注册。并通过 ap_add_output_filter 来唤醒调用。
Filters currently register using
ap_register_output_filter(name, filter_func, filter_init, ftype)
and are inserted using
ap_add_output_filter(name, ctx, req, conn)关于 以上两个api的用法, 在其文章 中做了详细解释。