1. 背景
由于某种认知的问题(或者其他个人原因),即使是面向对象的开发中,也总是不太确定过这样的问题:网络对象能不能缓存起来?
2. 聊聊这个事情
前提是面向对象编程:
在面向对象语言中开发网络程序,一个网络对象,具体到一个类比如socket的实例是可以缓存的。
但是缓存的目的有很多(我能够想到的是为了后续使用而不再重复创建连接),由于这个socket是有一个有生命(周期)的对象,因此缓存后,那么就引入了一些问题,要想循环利用这个缓存的对象,需要解决这些引入的问题:
对象的存活(连接是否还是连接状态connected状态),千万不要因为这个对象,缓存了就可以拿来就用,要进行必要的判断和容错(代码的健壮性)
什么时候从缓存中清除这个对象(有可能一直要缓存下去,但是由于某种原因,不想缓存下去就需要考虑和解决这个问题)
3. 延伸下这个问题
上面讲到的socket是有生命(周期)特性的一个例子,对于这样有生命(周期)的对象进行缓存,不仅仅要考虑对象的可用性,还可能要考虑涉及到缓存边界里面的一些问题(比如如何剔除无效的)