动态万维网页面的受控缓存
1. 引言
如今,越来越多的网站为了增加灵活性并提供最新信息,开始采用动态内容。然而,这种做法会显著增加服务器负载,因为每个请求都会触发代码执行,这可能涉及信息处理和对信息库的访问。本文将介绍一种用于维护动态生成页面的服务器端缓存方案,既能保证缓存一致性,又不会给应用程序开发者带来沉重负担。
万维网服务器提供的内容可分为静态和动态两类:
- 静态内容 :由存储在文件中的 HTML 页面和图像组成。
- 动态内容 :是服务器在收到相关请求后,通过执行服务器端程序或脚本(如 CGI、ASP、JSP 等)创建的。这些程序通常会接受请求中包含的一些参数,并从信息库(如数据库)中提取数据,以生成要返回给请求者的 HTML 页面。
早期,动态内容在万维网中较为罕见,但由于 HTML 页面制定需要更高的灵活性以及提供最新信息的需求,其占比不断增加。不过,动态内容会增加服务器的工作量,因为它需要执行可能成本较高的代码片段,同时还会产生额外的开销(如环境设置、维护等)。对于访问量较大的服务器来说,这种工作量可能会变得难以承受,而用于静态 HTML 页面的技术(如客户端缓存、代理服务器)可能无法有效降低动态内容带来的负载,因为这些技术没有考虑到动态内容的特殊性,例如参数的存在以及用于生成页面的数据或程序可能发生变化。
2. 相关工作
- 成本模型与预生成 :有研究提出了网页视图实体化的成本模型,也有讨论网页预生成以及信息库变更的问题,但没有提出选择最适合缓存页面的算法。