wap开发中如何有效的利用缓存减少消息的传送量
在无线网络的WAP信道环境下,由于带宽资源的限制,我们编写WAP应用的首要目标就是尽量减少消息的传输量。为了达到这个目标,缓存的使用成为了一个不可忽视的策略。大多数的WAP设备都内置了一定级别的缓存,它们默认会尝试最大化缓存的使用效率。几乎所有的URL响应都会被缓存起来。根据RFC2616的定义,缓存是程序中响应消息的本地存储区以及控制这些消息存储、重新获取和删除的子系统。利用缓存,我们可以降低未来的响应时间和网络带宽的消耗。当WAP用户终端缓存一个响应时,几乎所有的信息都会被保存下来,包括URL、响应文本、消息头以及其他可以验证响应的内容。每一个被缓存的项目都可以根据其URL的组成部分(如域名、路径、协议、参数和端口等)进行唯一识别。
对于WAP应用的开发来说,控制WML的DECK缓存变得尤为重要。HTTP消息头中的Cache-Control是最关键的工具,它能够直接通过请求/响应链来控制所有的缓存实体。所有的缓存机制都必须遵守这个消息头的定义。Cache-Control消息头通常用来覆盖设备的默认缓存行为。它在消息链中传递时,必须直接穿过所有的代理服务器和网关而不被改变。还有两种常见的标签如 <meta http-equiv="Expires"> 和 <meta http-equiv="Cache-Control"> 在HTML中设置缓存控制。
在开发WAP应用时,我们需要假设用户终端会尽可能地最大化缓存,以尽量减少向内容服务器获取信息的动作。关于如何控制URL的缓存时间,这里有一些实用的建议:
对于希望用户终端长时间保存的URL,如公司的LOGO等,可以通过设定一个较远的过期日来实现永久缓存这些URL。例如,设置 Expires 为 Tue, 01 Jan 2002 00:00:00 GMT。也可以通过设定一个较大的缓存时间,如 Cache-Control: max-age=3153600,让URL缓存一年之久。理论上,你可以让一个URL保存超过68年之久。
对于需要定期更新的内容,如股票报价系统,你可以指定Cache-Control: max-age=300来设定缓存时间。这样,用户在5分钟内检索该页面时看到的是缓存中的网页,而5分钟后则会到服务器上获取的数据。控制缓存时间的另一种方法是使用Expires标签,但这种方法会让用户在任何时候访问页面都需要刷新,因此不够灵活。
对于快速变化的内容,如实时新闻等,我们希望每次都得到的数据。此时可以禁止对该网页的缓存。方法包括设定Cache-Control: no-cache、设定最大缓存时间为0(Cache-Control: max-age=0)或设定一个早就过去的日期作为缓存到期日(如Expires: Mon, 1 Jan 1990 00:00:00 GMT)。虽然后两种方法在技术上是可行的,但它们会增加终端的处理时间和字节消耗,且在表达上不够清晰。推荐使用Cache-Control: no-cache来禁止对URL的缓存。通过这些策略和方法,我们可以有效地管理和优化WAP应用的缓存机制,从而提高用户体验和降低网络负担。WAP设备皆需遵守一个标准规定,那就是拥有至少可容纳十个项目的历史堆栈。当用户点击由特定的导航指令,如"
通常,所有的前进链接都会经过验证以确保用户能够顺利访问目标页面。而后退链接则往往不需要再次验证,因为它们已经存在于缓存之中。在某些情况下,我们希望用户在点击后退按钮时仍然能够获得的数据内容。如果设备始终不进行验证,那么用户可能需要回到主菜单并重新选择页面来获得信息。幸运的是,有一种解决方案叫做Cache-Control的must-revalidate选项。它能够强制设备在用户按下后退按钮时进行验证。这意味着即便用户点击后退按钮,服务器仍会确认该页面是否是的版本。这种验证并不总是意味着页面需要重新加载。只有当页面已经过期时,才会重新读取和验证页面内容。如此一来,用户体验会更加流畅,同时也能确保用户始终获得的信息内容。如果你希望每次点击后退按钮时都能刷新页面内容,那么你可以使用Cache-Control的must-revalidate和no-cache选项的组合来实现这一目标。更进一步地,通过设定max-age为特定的时间值(例如300秒),你可以控制哪些缓存页面会在用户点击后退按钮时被刷新。这样,无论是前进还是后退,用户都能享受到流畅且实时的浏览体验。在浏览网页的过程中,"body"区域将以cambrian渲染技术呈现丰富多样的内容给用户的视觉享受带来惊喜不断的变化。