| |
| |
Preface | |
| |
| |
Intended Audience | |
| |
| |
Organization of the Book | |
| |
| |
Acknowledgments | |
| |
| |
Introduction | |
| |
| |
| |
The Basics of Web Caching | |
| |
| |
| |
The Basics of Web Replication | |
| |
| |
| |
Beyond Performance | |
| |
| |
| |
Summary | |
| |
| |
| |
Background | |
| |
| |
| |
Network Layers and Protocols | |
| |
| |
| |
The ISO/OSI Reference Model | |
| |
| |
| |
Network Components at Different Layers | |
| |
| |
| |
Overview of Internet Protocols | |
| |
| |
| |
Summary | |
| |
| |
| |
The Internet Protocol and Routing | |
| |
| |
| |
Addressing | |
| |
| |
| |
IP Datagram Header | |
| |
| |
| |
Routing | |
| |
| |
| |
Routing within ASs | |
| |
| |
| |
Routing between ASs | |
| |
| |
| |
Multicast | |
| |
| |
| |
Summary | |
| |
| |
| |
Transmission control protocol | |
| |
| |
| |
Segment Header | |
| |
| |
| |
Opening a Connection | |
| |
| |
| |
Closing a Connection | |
| |
| |
| |
Flow Control | |
| |
| |
| |
Congestion Control | |
| |
| |
| |
Retransmission | |
| |
| |
| |
Summary | |
| |
| |
| |
Application Protocols for the Web | |
| |
| |
| |
Uniform Resource Locators | |
| |
| |
| |
The Domain Name System | |
| |
| |
| |
Name Hierarchy | |
| |
| |
| |
The DNS Protocol | |
| |
| |
| |
The HyperText Transfer Protocol | |
| |
| |
| |
The HTTP Request | |
| |
| |
| |
The HTTP Response | |
| |
| |
| |
The HTTP Message Exchange | |
| |
| |
| |
Hyperlinks and Embedded Objects | |
| |
| |
| |
Summary | |
| |
| |
| |
HTTP Support for Caching and Replication | |
| |
| |
| |
Conditional Requests | |
| |
| |
| |
Conditional Headers Used for Caching | |
| |
| |
| |
Conditional Headers Used for Replication | |
| |
| |
| |
Age and Expiration of Cached Objects | |
| |
| |
| |
Request Redirection | |
| |
| |
| |
Range Requests | |
| |
| |
| |
The cache-control Header | |
| |
| |
| |
cache-control Header Directives in Requests | |
| |
| |
| |
cache-control Header Directives in Responses | |
| |
| |
| |
Example of the cache-control Header | |
| |
| |
| |
Storing State for a Stateless Server: Cookies | |
| |
| |
| |
Support for Server Sharing | |
| |
| |
| |
Expanded Object Identifiers | |
| |
| |
| |
Learning the Proxy Chain | |
| |
| |
| |
Cacheability of Web Content | |
| |
| |
| |
Summary | |
| |
| |
| |
Web Behavior Rules of Thumb | |
| |
| |
| |
Evaluation Methods | |
| |
| |
| |
Live Measurements | |
| |
| |
| |
Trace-Based Methods | |
| |
| |
| |
Benchmarking | |
| |
| |
| |
Object Size | |
| |
| |
| |
Object Types and Cacheability | |
| |
| |
| |
Object Popularity | |
| |
| |
| |
Locality of Reference | |
| |
| |
| |
Temporal Locality | |
| |
| |
| |
Spatial Locality | |
| |
| |
| |
Rate of Object Modifications | |
| |
| |
| |
Other Observations | |
| |
| |
| |
Summary: Rules of Thumb for the Web | |
| |
| |
| |
Web Caching | |
| |
| |
| |
Proxy Caching: Realistic Expectations | |
| |
| |
| |
Do Proxy Caches Deserve a Hearing? | |
| |
| |
| |
Latency Reduction | |
| |
| |
| |
An Optimistic Bound on Latency Reduction | |
| |
| |
| |
A Pessimistic View of Latency Reduction | |
| |
| |
| |
TCP Connection Caching | |
| |
| |
| |
Connection Caching versus Data Caching | |
| |
| |
| |
TCP Connection Splitting | |
| |
| |
| |
Environment-Specific TCP Optimizations | |
| |
| |
| |
Bandwidth Savings | |
| |
| |
| |
Proxies and Streaming Media | |
| |
| |
| |
Summary | |
| |
| |
| |
Proxy Deployment | |
| |
| |
| |
Overview of Internet Connectivity Architectures | |
| |
| |
| |
Nontransparent Proxy Deployment | |
| |
| |
| |
Explicit Client Configuration | |
| |
| |
| |
Browser Autoconfiguration | |
| |
| |
| |
Proxy Auto-Discovery | |
| |
| |
| |
Transparent Proxy Deployment | |
| |
| |
| |
Multipath Problem | |
| |
| |
| |
Interception Mechanisms | |
| |
| |
| |
Layer 4 Switch as an Intercepter | |
| |
| |
| |
Router as an Intercepter | |
| |
| |
| |
Layer 7 Switch as an Intercepter | |
| |
| |
| |
Intercepting Link | |
| |
| |
| |
Performance Pitfalls | |
| |
| |
| |
Security and Access Control Issues | |
| |
| |
| |
Proxies and Web Server Access Control | |
| |
| |
| |
Proxies and Security | |
| |
| |
| |
Summary | |
| |
| |
| |
Cooperative Proxy Caching | |
| |
| |
| |
Shared Cache: How Big Is Big Enough? | |
| |
| |
| |
Issues in Cooperative Proxy Caching | |
| |
| |
| |
Location Management | |
| |
| |
| |
Broadcast Queries | |
| |
| |
| |
Hierarchical Caching | |
| |
| |
| |
URL Hashing | |
| |
| |
| |
Directory-Based Cooperation | |
| |
| |
| |
Directory Structures | |
| |
| |
| |
Caching on a Global Scale: Proxy Pruning | |
| |
| |
| |
System Model | |
| |
| |
| |
Cache Routing | |
| |
| |
| |
Vicinity Caching | |
| |
| |
| |
An Overview of Existing Platforms | |
| |
| |
| |
Cache Hierarchies | |
| |
| |
| |
Caching as a Service of a Network Access Point | |
| |
| |
| |
Satellite Broadcast Cache Service | |
| |
| |
| |
Summary | |
| |
| |
| |
Cache Consistency | |
| |
| |
| |
Cache Validation | |
| |
| |
| |
The Basic Validation Scenario | |
| |
| |
| |
Implicit Time to Live | |
| |
| |
| |
Fine-Tuning Validation | |
| |
| |
| |
Asynchronous and Piggyback Cache Validation | |
| |
| |
| |
Cache Invalidation | |
| |
| |
| |
Leases | |
| |
| |
| |
Subscriptions | |
| |
| |
| |
Delayed versus Immediate Updates | |
| |
| |
| |
Volumes | |
| |
| |
| |
Volume Lease Protocols | |
| |
| |
| |
Piggyback and Delayed Invalidation | |
| |
| |
| |
Invalidation in Cache Routing | |
| |
| |
| |
Issues in Cooperative Cache Consistency | |
| |
| |
| |
Validation with Cooperative Proxies | |
| |
| |
| |
Non-Monotonic Delivery Problem | |
| |
| |
| |
Summary | |
| |
| |
| |
Replacement Policy | |
| |
| |
| |
Replacement Policy Metrics | |
| |
| |
| |
Replacement Policy Algorithms | |
| |
| |
| |
The Value of Replacement Policy | |
| |
| |
| |
Summary | |
| |
| |
| |
Prefetching | |
| |
| |
| |
Performance Metrics | |
| |
| |
| |
Performance Bounds of Prefetching | |
| |
| |
| |
Taxonomy | |
| |
| |
| |
Nondata Prefetching | |
| |
| |
| |
Nontransparent Prefetching | |
| |
| |
| |
User Nontransparency | |
| |
| |
| |
Server Nontransparency | |
| |
| |
| |
Server Push versus Client Pull | |
| |
| |
| |
Information Used in Prefetching Algorithms | |
| |
| |
| |
User-Specific Information | |
| |
| |
| |
Group Information | |
| |
| |
| |
Multiuser Information | |
| |
| |
| |
Prediction Algorithms | |
| |
| |
| |
Popularity-Based Predictions | |
| |
| |
| |
Markov Modeling | |
| |
| |
| |
Examples of Algorithms Using First-Order Markov Modeling | |
| |
| |
| |
Exploiting Longer Request Sequences | |
| |
| |
| |
Structure Algorithms | |
| |
| |
| |
Summary | |
| |
| |
| |
Caching the Uncacheable | |
| |
| |
| |
A Note on Implementation | |
| |
| |
| |
Modified Content and Stale Delivery Avoidance | |
| |
| |
| |
Cache-Friendly Approaches to Stale Delivery Avoidance | |
| |
| |
| |
Utilizing Cached Stale Content | |
| |
| |
| |
Cookied Content | |
| |
| |
| |
Cache-Friendly Usage of Cookies | |
| |
| |
| |
Caching Cookied Content | |
| |
| |
| |
The Semantic Transparency Issue | |
| |
| |
| |
Expressly Uncacheable Content and Hit Metering | |
| |
| |
| |
Cache-Friendly Approaches to Hit Metering | |
| |
| |
| |
Caching Expressly Uncacheable Content | |
| |
| |
| |
Dynamic Content | |
| |
| |
| |
Cache-Friendly Design of Dynamic Content | |
| |
| |
| |
Base-Instance Caching | |
| |
| |
| |
Template Caching | |
| |
| |
| |
Base-Instance Caching versus Template Caching | |
| |
| |
| |
Active Proxies | |
| |
| |
| |
Summary | |
| |
| |
| |
Web Replication | |
| |
| |
| |
Basic Mechanisms for Request Distribution | |
| |
| |
| |
Content-Blind Request Distribution with Full Replication | |
| |
| |
| |
Client Redirection | |
| |
| |
| |
Redirection by a Balancing Switch | |
| |
| |
| |
Redirection by a Web Site's DNS | |
| |
| |
| |
Anycast | |
| |
| |
| |
Content-Blind Request Distribution with Partial Replication | |
| |
| |
| |
Using Surrogates as Server Replicas | |
| |
| |
| |
Back-End Distributed File Systems | |
| |
| |
| |
Content-Aware Request Distribution | |
| |
| |
| |
Client Redirection by a Java Applet | |
| |
| |
| |
HTTP Redirection | |
| |
| |
| |
Redirection by an L7 Switch | |
| |
| |
| |
Fine-Granularity Domain Names | |
| |
| |
| |
Summary | |
| |
| |
| |
Content Delivery Networks | |
| |
| |
| |
Types of CDNs | |
| |
| |
| |
Delivering Requests to a CDN | |
| |
| |
| |
Finding Origin Servers | |
| |
| |
| |
Request Distribution in CDNs | |
| |
| |
| |
DNS/Balancing Switch Redirection | |
| |
| |
| |
Two-Level DNS Redirection | |
| |
| |
| |
Anycast/DNS Redirection | |
| |
| |
| |
Pitfalls of DNS-Based Request Distribution | |
| |
| |
| |
Fine-Tuning DNS Request Distribution | |
| |
| |
| |
Post-DNS Request Distribution by Triangular Communication | |
| |
| |
| |
Post-DNS Request Distribution with HTTP Redirection and URL Rewriting | |
| |
| |
| |
Data Consistency in CDNs | |
| |
| |
| |
Streaming Content Delivery | |
| |
| |
| |
Using Multicast for Streaming Content Delivery | |
| |
| |
| |
Using Application-Level Multicast for Streaming Content Delivery | |
| |
| |
| |
Constructing a Distribution Tree | |
| |
| |
| |
Supporting Secure Content Access | |
| |
| |
| |
SSL Overview | |
| |
| |
| |
Performance Impact of Supporting SSL in a CDN | |
| |
| |
| |
Key Management | |
| |
| |
| |
Content Retrieval from the Origin Server | |
| |
| |
| |
Summary | |
| |
| |
| |
Server Selection | |
| |
| |
| |
Metrics | |
| |
| |
| |
Proximity Metrics | |
| |
| |
| |
Server Load Metrics | |
| |
| |
| |
Aggregate Metrics | |
| |
| |
| |
Internet Mapping Services | |
| |
| |
| |
Aging of Metrics | |
| |
| |
| |
Algorithms | |
| |
| |
| |
Obtaining Passive Measurements | |
| |
| |
| |
Avoiding Oscillations | |
| |
| |
| |
Supporting Client Stickiness | |
| |
| |
| |
Respecting the Affinity of Server Caches | |
| |
| |
| |
Server Selection with Multiple Metrics | |
| |
| |
| |
DNS-Based Server Selection | |
| |
| |
| |
A Typical DNS Server-Selection Scheme | |
| |
| |
| |
Estimating Hidden Load Factors | |
| |
| |
| |
Why Choose a Server When You Can Have Them All? | |
| |
| |
| |
Summary | |
| |
| |
| |
Further Directions | |
| |
| |
| |
Adding Value at the Edge | |
| |
| |
| |
Content Filtering | |
| |
| |
| |
Content Transcoding | |
| |
| |
| |
Watermarking | |
| |
| |
| |
Custom Usage Reporting | |
| |
| |
| |
Implementing New Services with an Edge Server API | |
| |
| |
| |
The ICAP Protocol | |
| |
| |
| |
Distributing Web Applications | |
| |
| |
| |
How to Replicate Applications | |
| |
| |
| |
Where to Replicate Applications | |
| |
| |
| |
Summary | |
| |
| |
| |
Content Distribution Internetworking | |
| |
| |
| |
Pros and Cons of CDI | |
| |
| |
| |
Request Distribution | |
| |
| |
| |
Content Distribution | |
| |
| |
| |
Accounting | |
| |
| |
| |
Summary | |
| |
| |
Glossary | |
| |
| |
Bibliography | |
| |
| |
Index | |