对于缓存,我画了一张图,不太形象,只作为辅助
yii:
一.浏览器第一次访问服务器,服务器返回数据,浏览器在本地把此数据缓存在本地
当访问index控制器,调用缓存到浏览器中,浏览器中这个字段体现,当出现这个字段,表示告诉浏览器将数据缓存起来
二.这时候,一个管理员把这条内容改了,过了一会儿,他又感觉不好,又改了回来,但是呢,服务器上文件保存时间变化了,和浏览器缓存数据不一样了(last_modifiled代表缓存文件记录时间)修改数据后,返回时间改变
多了一个last-Modified字段,对比不一致,则认为缓存无效
三.这时候,它们想了一个办法,用一个etag来记录服务器的数据有无变化,就算有人修改了,时间变了,但只要内容没变,那缓存数据还是一样能用
代码中多了一个etag字段,来标志数据是否改变
浏览器中多了一个etag字段,跟服务器返回的etag未改变,则认为缓存能用(浏览器中etag经过加密的)