计算机网络
- 分层结构
- TCP/UDP
- 区别
- TCP 三次握手,四次挥手
- HTTP/HTTPS
- 区别
- 无状态
- 长链接、短链接
- 状态码
- Cookie 和 Session
- URI 和 URL
问题
http 服务中静态文件的 Last-Modified 是根据什么生成的
一般会选文件的 mtime,表示文件内容的修改时间
nginx 也是这样处理的,源码见: ngx_http_static_module.c(opens new window)
r->headers_out.status = NGX_HTTP_OK;
r->headers_out.content_length_n = of.size;
r->headers_out.last_modified_time = of.mtime;
文件系统中 mtime、ctime 和 atime 指什么,都有什么不同
在 linux 中,
- mtime:modified time 指文件内容改变的时间戳
- ctime:change time 指文件属性改变的时间戳,属性包括 mtime。而在 windows 上,它表示的是 creation time
所以 ctime 会比 mtime 要大一些,使用 stat 查看文件属性如下
$ stat hello.txt
File: ‘hello.txt’
Size: 30 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 917526 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-12-10 16:15:55.253325208 +0800
Modify: 2019-12-10 16:15:52.740653330 +0800
Change: 2019-12-10 16:15:52.742653069 +0800
Birth: -
而 http 服务选择 Last_Modified 时一般会选择 mtime
http 响应头中 content-type 为 application/octet-stream,代表什么
代表二进制流,一般用以下载文件
http 响应头中 Date 与 Last-Modified 有什么不同,网站部署时需要注意什么
- Date: 报文在源服务器的产生时间,由此可查看报文已缓存了多久时间
- Last-Modified: 源服务器上资源的上次修改时间
LM-Factor 与它俩有关。
简而言之,一个静态资源没有设置 Cache-Control 时会以这两个响应头来设置强制缓存时间:(Date - LastModified) * n,而非直接进行协商缓存。在涉及到 CDN 时,表现更为明显,体现在更新代码部署后,界面没有更新。
什么情况下会发送 OPTIONS 请求
当一个请求跨域且不是简单请求时就会发送 OPTIONS 请求
满足以下条件就是一个简单请求:
Method: 请求的方法是 GET、POST 及 HEAD
Header: 请求头是 Content-Type、Accept-Language、Content-Language 等
Content-Type: 请求类型是 application/x-www-form-urlencoded、multipart/form-data 或 text/plain
而在项目中常见的 Content-Type: application/json
及 Authorization: <token>
为典型的非简单请求,在发送请求时往往会带上 Options
更详细内容请参考 CORS - MDN