13 Caching in HTTP
HTTP多应用于分布式信息系统,通过使用response缓存来提高性能。HTTP/1.1包括许多元素来使缓存发挥作用成为可能。
Cache的目的和机制概述。
关于降低语义透明度。
13.1.1 Cache Correctness
返回最新response:满足的条件
如果无法做到,那么应该返回error,warning
对stale的response的处理
13.1.2 Warnings
产生时机,目的
2类warning
13.1.3 Cache-control Mechanisms
可以在request和response提供显示控制字段
13.1.4 Explicit User Agent Warnings
对于用户指定的cache机制user agent应该加以warning
13.1.5 Exceptions to the Rules and Warnings
有些时候允许cache发回statle response;同时也允许user agent来通过1步1步地得到first-hand或者fresh的response。
13.1.6 Client-controlled Behavior
可以指定可以接受的response的expiration information。
13.2 Expiration Model
13.2.1 Server-Specified Expiration
HTTPserver如何让缓存工作得很好,expiration time。
13.2.2 Heuristic Expiration
启发式的时间标记
13.2.3 Age Calculations
13.2.4 Expiration Calculations
13.2.5 Disambiguating Expiration Values
出现了多个cache为同一个资源包含多个fresh values。
13.2.6 Disambiguating Multiple Responses
如果client从多个cache收到了多个response
13.3 Validation Model
校验一个stale response是否可用,通过cache validators.
13.3.1 Last-Modified Dates
用来作为cache validators
13.3.2 Entity Tag Cache Validators
用来提供非last-modified date的校验素
13.3.3 Weak and Strong Validators
语义上重大改变才改变的是weak Validators
13.3.4 Rules for When to Use Entity Tags and Last-Modified Dates
13.3.5 Non-validating Conditionals
为什么采用那种ET,而不用其他header
13.4 Response Cacheability
在什么情况下缓存response。
13.5 Constructing Responses From Caches
13.5.1 End-to-end and Hop-by-hop Headers
分成2类,一类是必须在client和server之间传递,一类是在一次连接2端传递
13.5.2 Non-modifiable Headers
不可修改的头
13.5.3 Combining Headers
合并起来作为response的一部分
13.5.4 Combining Byte Ranges
Cache组合得到的range。
13.6 Caching Negotiated Responses
关于Negotiated Responses如何缓存
13.7 Shared and Non-Shared Caches
针对某一个user的cache是shared caches
13.8 Errors or Incomplete Response Cache Behavior
如何面对部分的response和server的5xx
13.9 Side Effects of GET and HEAD
对于get,head方法,旁效应和是否缓存的关系
13.10 Invalidation After Updates or Deletions
如果origin server变了,如何及时通知cache
13.11 Write-Through Mandatory
除了get 和head方法都必须要wirte through
13.12 Cache Replacement
插入新缓存替代旧缓存
13.13 History Lists
历史并不试图保证最新的请求资源
15 Security Considerations
关于HTTP1.1的安全考虑
15.1 Personal Information
关于客户端隐私信息分发的问题
15.1.1 Abuse of Server Log Information
在server上存储的客户信息
15.1.2 Transfer of Sensitive Information
敏感信息的传递应该给user足够的控制
15.1.3 Encoding Sensitive Information in URI’s
必须要考虑post和get方法在安全上的区别。Get方法是会编码到URI中的
15.1.4 Privacy Issues Connected to Accept Headers
在Accept Headers一些隐私
15.2 Attacks Based On File and Path Names
不返回不想给的文件
15.3 DNS Spoofing
Client如果缓存dns,应该观察ttl。
15.4 Location Headers and Spoofing
如果server是多organization,注意Location和Content-Location头区。
15.5 Content-Disposition Issues
虽然不是http内容,但被广泛实现,有很多安全考虑
15.6 Authentication Credentials and Idle Clients
关于认证缓存后可否再次更新
15.7 Proxies and Caching
受攻击的对象;同时注意LOG系统;cache proxy更加容易受到攻击;可以使用密码术来增强安全性,但是这不属于HTTP协议的内容。
15.7.1 Denial of Service Attacks on Proxies
还在研究