mochiweb源码分析(七)
前面说到了filelib:is_dir这函数,如果是目录,则执行true流程,进入mochiweb_request:maybe_redirect/4这函数
然后根据第一个参数是否是[],调用不同的分支
回到之前说的true、false判断,如果是文件,则调用mochiweb_request:maybe_serve_file/3
首先:LastModified = httpd_util:rfc1123_date(FileInfo#file_info.mtime),这里根据读取到的文件信息中的最后一次写的时间,来生成一个rfc1123 date
获取到日期以后,接着调用:mochiweb_request:get_header_value/2函数传递头部信息判断日期是否已存在.
若存在返回304代码,304代码解释如下:
HTTP 304 Response 当一个客户端(通常是浏览器)向web服务器发送一个请求,如果web服务器返回304响应,则表示此请求的本地缓存是最新的,可以直接使用
如不存在则打开文件mochiweb_request:ok/2是用响应状态行、响应头部、空行和消息体组成响应报文发给客户端。