浏览器缓存
开发过程中会经常去刷新缓存。通常通过ctrl+F5来刷新缓存。但是为什么会刷新缓存呢?
因为我们的请求中会增加header
pragma:no-cache
cache-control:no-cache
Cache-Control的可选值
- Public 缓存所有,响应头设置
- Private 缓存到私有缓存,响应头设置
- no-cache 所有内容都不会缓存,请求头&响应头设置
- no-store 所有内容都不缓存,也不进入Internet临时文件,响应头中设置
- must-revalidation 若缓存内容失效,则必须发送给服务器进行验证,请求头中设置。
- max-age 缓存的内容将于xxx秒后失效。 HTTP1.1 比Last-Modified优先级高
DNS解析
- 在浏览器中输入 www.xxxx.com 并回车
- 浏览器检测浏览器是否有该域名的缓存。
- 如果有,则直接返回 域名和IP的对应关系给浏览器。
- 否则 访问本机的hosts
- 如果有,则返回 域名和IP对应关系给浏览器。
- 否则 浏览器访问LDNS服务器
- 如果 LDNS上有该域名和IP的对应关系,则返回给浏览器
- 否则 LDNS访问RootDNSServer,并得到一个NameServer地址
- LDNS访问NameServer,并获取到 域名和IP的对应关系
- LDNS 缓存该映射关系到本LDNS 缓存时间由TTL决定
- LDNS返回映射关系给浏览器
- 浏览器 缓存(根据TTL)域名和IP的对应关系并根据此内容去发起请求。
通过nslookup 和 dig www.xxx.com +trace 来跟踪域名解析的过程
Java 的JVM 通过InetAddress来缓存内容
%JAVA_HOME%/lib/security/java.security
networkaddress.cache.ttl 默认-1 永不失效
networkaddress.cache.negative.ttl 默认10秒失效
也可以通过 -Dsun.net.inetaddr.ttl=xxxx 来启动时修改
域名解析配置
A记录:Address 域名和IP对应关系
MX记录:Mail Exchange 指定域名指向的邮箱地址。
CNAME记录:Canonical Name 别名解析
NS记录:指定DNS服务器进行解析
TXT记录:一些存储信息
CDN配置
CDN简单来讲就是 内容分布网络(Content Delivery Network) 在用户和服务器间增加一层缓存结构,让一些静态信息可以通过就近的缓存服务器返回。这样就大大加快了访问的速度。
CDN=镜像+缓存+负载均衡
CDN动态回源,通过计算得到最近的一条回源路径,这样可以增大请求的效率。