HTTP协议基础
协议版本与特性
版本 | 特性 |
---|---|
HTTP/1.0 | 无持久连接(每次请求关闭连接)、头字段较少、文本格式请求/响应 |
HTTP/1.1 | 支持持久连接(默认)、新增Cache-Control等头字段、分块传输编码 |
HTTP/2 | 二进制分帧传输、多路复用、头部压缩(HPACK)、强制明文TCP连接 |
HTTP/3 | 基于UDP的QUIC协议、加密传输、低延迟、流控改进 |
请求/响应结构
请求报文:
Keep-Alive
Connection: close
Cache-Control
no-cache
/max-age=3600
)Content-Encoding
gzip
/deflate
/br
)Transfer-Encoding
chunked
)常见问题与解决方案
404 Not Found
原因 | 解决方案 |
---|---|
URL路径错误 | 检查请求路径是否与服务器资源匹配 |
文件被删除 | 恢复文件或设置自定义404页面 |
路由未配置 | 在Web框架中添加对应路由处理 |
500 Internal Server Error
原因 | 解决方案 |
---|---|
代码逻辑错误 | 检查服务器端日志,修复代码异常 |
权限不足 | 确保文件/目录有正确读写权限(如chmod 755 ) |
资源耗尽 | 调整PHP配置(如memory_limit )或优化数据库查询 |
性能优化策略
-
压缩传输
- 启用GZIP/Brotli压缩(
mod_deflate
模块) - 示例:
AddOutputFilterByType DEFLATE text/html
- 启用GZIP/Brotli压缩(
-
缓存优化
- 设置
Cache-Control: public, max-age=604800
(强缓存一周) - 使用CDN缓存静态资源
- 设置
-
长连接复用
- HTTP/1.1保持连接复用,减少TCP握手次数
- HTTP/2多路复用同一连接并行请求
-
异步加载
- 使用
async
/defer
加载JS脚本 - 雪碧图合并小图标减少HTTP请求数
- 使用
安全注意事项
-
HTTPS强制跳转
配置.htaccess
:RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] -
防DDoS攻击
- 限制单IP请求频率(如Nginx
limit_req
模块) - 使用Cloudflare等WAF服务过滤恶意流量
- 限制单IP请求频率(如Nginx
-
敏感数据保护
- Cookie设置
Secure
和HttpOnly
属性 - POST表单数据避免明文传输(启用TLS)
- Cookie设置
相关问题与解答
Q1:如何区分HTTP状态码分类?
A:
- 1xx:信息响应(如100 Continue)
- 2xx:成功(200 OK、206 Partial Content)
- 3xx:重定向(301 Moved Permanently、302 Found)
- 4xx:客户端错误(400 Bad Request、403 Forbidden)
- 5xx:服务器错误(500 Internal Error、502 Bad Gateway)
Q2:为什么推荐使用HTTP/2?
A:
- 多路复用:单个连接并发多个请求,解决队头阻塞问题
- 头部压缩:减少冗余头字段传输(如User-Agent重复发送)
- 服务端推送:预加载资源(如CSS/JS)减少等待时间
- 二进制分帧:降低解析