CDN缓存如何应对局部页面变化?

比如我有个CMS,其中的大多数页面都是只增不改的,只有一台联通VPS,于是用了CDN服务来让全国的网友访问。
但是这个CMS是可以有用户登陆的,登陆以后,页面顶部就会显示当前用户的昵称。——于是页面就不能缓存了。

我现在能想到的是,在顶部那一小块儿用ajax请求一个不缓存的地址,做动态载入。(@felix021 同学提醒也可以用jsonp..)
还有一个是CDN服务器端,如果识别到sess_id,就只做反向代理到源站,不读缓存,但是好像没什么CDN服务商提供这种服务。
有别的办法么?

阅读 8.5k
4 个回答

嗯 看起来用jsonp比较合适,我就回复一下 赚点积分XD

之前做过全站静态化的匿名论坛程序,把动态部分异步加载即可

例子:http://bbs.imoe.in/
/*割 更新一下*/

修改一下, 可以通过函数回调传递数据

在缓存页面提前定义

var cb=function(json){
   ...对json进行处理
}

以 .js 的形式载入另外一个域名的脚本

js内容

cb(...各种需要的动态数据,嫌麻烦可以直接拼合成html返回过来...);

这货就是json-P嘛

jQuery有封装好的$getJSON 可用

http://www.w3school.com.cn/jquery/aja...

第一个问题:
ajax、json、js都可以实现,哪个更好想必不用说了。一般来说我会直接在用户登录时,直接把昵称存入cookie,直接读取cookie就可以了,涉及到会员操作的再进行认证,这样可以减少一次动态请求。

第二个问题:
header包含Set-cookie的页面CDN一般是不缓存的(也有些CDN可以设置忽略),如果不是动态页面,可以考虑不让其产生cookie

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进