• Expires和max-age的区别


    Expires和max-age都可以用来指定文档的过期时间,但是二者有一些细微差别

    1.Expires在HTTP/1.0中已经定义,Cache-Control:max-age在HTTP/1.1中才有定义,为了向下兼容,仅使用max-age不够;
    2.Expires指定一个绝对的过期时间(GMT格式),这么做会导致至少2个问题1)客户端和服务器时间不同步导致Expires的配置出现问题 2)很容易在配置后忘记具体的过期时间,导致过期来临出现浪涌现象;

    3.max-age 指定的是从文档被访问后的存活时间,这个时间是个相对值(比如:3600s),相对的是文档第一次被请求时服务器记录的Request_time(请求时间)

    4.Expires指定的时间可以是相对文件的最后访问时间(Atime)或者修改时间(MTime),而max-age相对对的是文档的请求时间(Atime)

    5.在Apache中,max-age是根据Expires的时间来计算出来的max-age = expires- request_time:(mod_expires.c)

    429 expires = base + additional;
    430 apr_table_mergen(t, "Cache-Control",
    431 apr_psprintf(r->pool, "max-age=%" APR_TIME_T_FMT,
    432 apr_time_sec(expires - r->request_time)));

    注:如果是A,base=request_time,M的话base=finfo.mtime.
    expires - request_time得到max-age,如果Expires根据的是A(也就是AccessTime)设置的(A后面的值就是addtional),那么expires设置的值就等于addtional值,但是如果Expires根据的是Mtime,那么如果M后面的参数小于最后修改时间到当前时间的差(比方说2小时前修改了文件(19:00:00),现在设置M3600(现在是21:00:00)并且访问,max-age=expires-request_time = (finfo.mtime+additional)- request_time),计算出的max-age就是负数(可以试验看到这个结果):
    max-age = (19:00:00+3600/3600) - 21:00:00 = -3600s

    这样,在Apache中,max-age就不仅仅是相对Atime的时间了,如果设置为M,相对的是Mtime。

  • 相关阅读:
    企业大数据-之机器数据
    实践和感悟
    企业级大数据处理方案03-数据流程
    scala数据库工具类
    企业生产环境集群稳定性-HA就行吗?
    企业级大数据处理方案-02.环境决定需求、性能决定选型
    Scala编程之访问修饰符
    spark-submit提交参数设置
    window.location
    [转载]Arguments
  • 原文地址:https://www.cnblogs.com/douglasvegas/p/4710061.html
Copyright © 2020-2023  润新知