深入分析javaweb内幕读书笔记01

浏览器缓存机制

  1. 浏览页面发现异常时考虑缓存问题
  2. Ctrl+F5刷新页面,在Http的请求头增加一些请求头(Progma:no-cache, Cache-Control:no-cache)
Cache-Control/Progma

    这个Http Head用于指定所有缓存机制在整个请求/响应链中必须服从的命令(和其它一些请求字段如Expires[缓存失效]同时出现时,会将其覆盖)


Last-Modified/Etag
    服务器上的资源最后一次修改时间,可以用来判断当前页面是否是最新的 
再次请求就可以在请求头中添加If-Modified-Since:Wed, 18 Apr 2018 01:21:34 GMT来判断,如果返回码为304则为最新。

    Etag则是让服务器为每一个页面分配唯一编号,通过这个编号来区分当前页面是否是最新的,这种方式比Last-Modified更加灵活,但每个web服务器都要记录所有页面编号,否则没有意义。


DNS解析

    Java应用中的jvm也会缓存DNS的解析结果,在InetAddress类中完成(单例模式),两种解析结果在%JAVA_HOME%\lib\security\java.security文件中,成功-->networkaddress.cache.ttl(default为-1,永不失效),失败-->networkaddress.cache.negative.ttl(default为10秒)


域名解析记录,A:域名对应的IP地址,CNAME:域名的别名,NS:指定DNS解析服务器,TXT:设置说明

CDN(content deliver network)内容分发网络(有点类似操作系统中的缓存的感觉),通常要达到
  1. 可扩展:新增数据、用户、事务的扩展能力,动态服务能力,高质量内容分发
  2. 安全性
  3. 可靠性、响应、执行:处理可能的故障,负载均衡
负载均衡:
    链路负载均衡:通过DNS解析成不同IP,访问不同的服务器,缺点:域名的更新不同步造成的问题
    集群负载均衡:硬件/软件负载均衡,软件负载均衡经过多次代理服务器

CDN动态加速:通过链路探测(到某个服务器下载一个文件的速度比较/还有流量耗费等的因素)寻找回源最好的一条,然后DNS调度指定在这一条上回源

你可能感兴趣的:(java,web)