Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

程序通信中缓存的重要性

  程序通信越来越流行的今天,很多前端框架都已经基于程序通信来实现了。虽然我也很喜欢程序通信,但它也不是那么容易驾驭的。既然使用了程序通信,就相当于放弃了传统Web结构的一些自然优化。比如HTTP本身的一套缓存机制,就会因为程序通信而被弱化。
  但大多数API被设计成SOAP(大家都这么喜欢捡肥皂吗←_←)。由于从一个固定不变的URL上加载数据,为了防止客户端顽固缓存使用户无法查看到最新内容,客户端程序通常会使用POST方法(或者使用更糟糕的GET方法请求URL后加随机参数)。那么,传统Web结构原有的缓存机制就被破坏。如果直接使用这样的程序就可能造成比传统Web结构更大的网络开销。
  使用SOAP模式的Web结构就应该为序自己实现一套缓存机制(REST模式可以部分依赖HTTP缓存,但不建议如此)。而且既然是程序通信,那就可以实现比HTTP缓存更好的缓存机制。HTTP缓存总是针对一个完整的资源的,而程序通信的话,数据可以被分解到更细的单元再做缓存。比如一个数据列表,HTTP缓存是直接缓存整个列表,其中有任何数据变化都要重新加载。而程序缓存可以缓存到列表中的项,列表数据有变化时只要加载变化的项即可。甚至如果是REST的话可以做多级缓存,先让浏览器处理HTTP缓存,之后程序再进一步处理。
  最后总结一些要点:以程序通信主导的框架总是要有一个程序实现的缓存机制相佐,否则只会让程序的网络开销变得更大。程序实现缓存机制需要一些浏览器API的支持,比如localStorage、indexedDB等(本博客程序的缓存主要就使用indexedDB,可以在浏览器的开发人员工具中看到)。因此对于低版本浏览器而言,程序通信并不会带来什么优化,也许还适得其反。
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^