| 12345678910111213141516171819202122232425262728 |
- -- ngx.arg[1] => chunk
- -- ngx.arg[2] => eof
- -- 大文件只返回首块 hash(用户从廉价带宽获取内容)
- if ngx.ctx._switched then
- local chunk = ngx.arg[1]
- ngx.arg[1] = #chunk .. ',' .. ngx.crc32_long(chunk)
- ngx.arg[2] = true
- return
- end
- -- 计算 HTTP 返回数据的 hash(用于统计)
- if ngx.ctx._sha256 == nil then
- local resty_sha256 = require 'resty.sha256'
- ngx.ctx._sha256 = resty_sha256:new()
- end
- if ngx.arg[2] then
- local digest = ngx.ctx._sha256:final()
- digest = digest:sub(1, 16)
- local str = require 'resty.string'
- ngx.var._bodyhash = str.to_hex(digest)
- else
- ngx.ctx._sha256:update(ngx.arg[1])
- end
|