Page 236 - Web性能权威指南
P. 236

某本地资源不在缓存中,那么浏览器就会发送网络请求,将响应自动填充到缓存中,
                 以备后续访问使用。

                 •   浏览器针对每个资源自动执行缓存指令。
                 •   浏览器会尽可能恢复失效资源的有效性。
                 •   浏览器会自动管理缓存大小及资源回收。

                 高效、最优地管理缓存很困难。所幸,浏览器会替我们照管这一切,我们要做的,
                 只是确保服务器返回适当的缓存指令(参见 13.1.1 节“在客户端缓存资源”)。你已
                 经让服务器对页面的所有资源都返回 Cache-Control、ETag 和 Last-Modified 等响应
                 首部了,对不?

                 最后,浏览器还有一个经常被人忽视的重要功能,那就是提供会话认证和 cookie 管
                 理。浏览器为每个来源维护着独立的 cookie 容器,为读写新 cookie、会话和认证数
                 据提供必要的应用及服务器 API,还会为我们自动追加和处理 HTTP 首部,让一切
                 都自动化。


                            举一个简单但直观的例子,它能说明把会话状态管理委托给浏览器的好处:
                            认证的会话可以在多个标签页或浏览器口间共享,反之亦然;如果用户在
                            某个标签页中退出,那么其他所有打开窗口中的会话都将失效。



                 14.4 应用API与协议

                 在浏览器提供的网络服务的最上层,就是应用 API 和协议。前面介绍了下层提供
                 的各种重要服务:套接字和连接管理、请求和响应处理、各种安全机制、缓存,等
                 等。我们每次发起 HTTP 或 XMLHttpRequest 请求,或者长 Server-Sent  Event 或
                 WebSocket 会话,或者打开 WebRTC 连接,都需要与其中一些或全部底层服务打
                 交道。

                 不存在哪个协议或 API 最好的问题。每个稍微复杂点的应用都会基于不同的需
                 求用到各种传输机制,包括读写浏览器缓存、协议开销、消息延迟、可靠性、数
                 据传输类型,等等。某些协议的交付延迟可能短一些(比如 Server-Sent  Events、
                 WebSocket),但却不能满足其他条件,比如利用浏览器缓存,或者在所有场景下支
                 持高效的二进制传输(表 14-1)。








                                                                       浏览器网络概述   |   223
   231   232   233   234   235   236   237   238   239   240   241