HTTP 使用期及新鲜度算法

Posted 小熊猫小

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP 使用期及新鲜度算法相关的知识,希望对你有一定的参考价值。

使用期算法:

  /*
   * age_value 当代理服务器用自己的头部去响应请求时,Age标明实体产生到现在多长时间了。
   * date_value HTTP 服务器应答中的Date字段 原始服务器
   * request_time 缓存的请求时间
   * response_time 缓存获取应答的时间
   * now 当前时间
   */

  apparent_age = max(0, response_time - date_value); //缓存收到响应时响应的年龄 处理时钟偏差存在时,可能为负的情况

  corrected_received_age = max(apparent_age, age_value);  //  容忍Age首部的错误

  response_delay = response_time - request_time; // 处理网络时延,导致结果保守

  corrected_initial_age = corrected_received_age + response_delay;

  resident_time = now - response_time; // 本地的停留时间,即收到响应到现在的时间间隔

  current_age   = corrected_initial_age + resident_time;
  
  // 各个计算都极可能保守
  // 响应使用期 = max( 响应时间 - 响应头部date,响应中age );
  // 传输延迟时间 = 响应时间 - 请求时间 // 使用期中至少不低于这个指
  // 停留缓存时间 = 当前时间 - 响应时间
  // 保守使用期 = 响应响应使用期 + 传输延迟时间 + 停留缓存时间 // 这个值不是精准,是保存估计的值  

新鲜度算法:

 /**
     * $heuristic 启发式过期值应不大于从那个时间开始到现在这段时间间隔的某个分数
     * $Max_Age_value_set  是否存在Max_Age值  Cache-Control字段中“max-age”控制指令的值
     * $Max_Age_value  Max_Age值
     * $Expires_value_set 是否存在Expires值
     * $Expires_value Expires值
     * $Date_value Date头部
     * $default_cache_min_lifetime 
     * $default_cache_max_lifetime
     */
    function server_freshness_limit() {
        global $Max_Age_value_set, $Max_Age_value;
        global $Expires_value_set, $Expires_value;
        global $Date_value, $default_cache_min_lifetime, $default_cache_max_lifetime;
 
        $factor = 0.1; //典型设置为10%
 
        $heuristic = 0; //  启发式 默认为0
 
        if ($Max_Age_value_set) {   // 优先级一为 Max_Age
            $freshness_lifetime = $Max_Age_value;
        }elseif($Expires_value_set) {  //   优先级二为Expires
            $freshness_lifetime = $Expires_value - $Date_value;
        }elseif($Last_Modified_value_set) { //  优先级三为Last_Modified
            $freshness_lifetime = (int)($factor * max(0, $Date_value - $Last_Modified_value ));
            $heuristic = 1; //  启发式
        }else{  
            $freshness_lifetime = $default_cache_min_lifetime;
            $heuristic = 1; //  启发式
        }
 
        if ($heuristic) {
            $freshness_lifetime = $freshness_lifetime > $default_cache_max_lifetime ? $default_cache_max_lifetime : $freshness_lifetime;
            $freshness_lifetime = $freshness_lifetime < $default_cache_min_lifetime ? $default_cache_min_lifetime : $freshness_lifetime;
        }
 
        return $freshness_lifetime;
 
    }
	
	// 新鲜度算法
	// max-age 》 expires - date_header 》 factor * max(0,date_header - last_modified_date)》default_cache_min_date 
	// 并检查结果是否超过缓存的最大或者最小新鲜度

  

  

以上是关于HTTP 使用期及新鲜度算法的主要内容,如果未能解决你的问题,请参考以下文章

片段(Java) | 机试题+算法思路+考点+代码解析 2023

Flask 编写http接口api及接口自动化测试

叮!“新鲜出炉”的数据结构与算法教程,请查收!

matlab生鲜或农产品(河马等)配送路径优化研究matlab优化算法十八

matlab生鲜或农产品(河马等)配送路径优化研究matlab优化算法十八

以下代码片段的算法复杂度