就比如淘宝的API接口调用,它提供接口,读取这个接口URL返回的是XML文件格式,从XML中读取数据,类似这样的功能,如果每次打开页面都读取速度肯定会很慢,而且还有致命的弱点,淘宝的API还限制每分钟的读取频率,所以我想知道,有什么办法可以缓存读取的XML,因为这个读取的XML变化很小,我对缓存的原因也不懂,就想知道如何做到当我第一次刷新页面时候程序去读取远程地址,再次刷新则不去读取URL这样的缓存。
另外由于我不是一个页面调用,参数也是有的,这样不知道用页面缓存是不是有效果呢?

解决方案 »

  1.   

    第一次获取后,把数据cache起来就行了,然后在cache中设置好依赖,一定条件下触发重新读取url,获取最新数据~~
      

  2.   

    我觉得应该用缓存依赖,依赖于你的XML文件,当你的XML文件改变的时候在从新缓存
      

  3.   

    楼上的说的没错,我研究了一下是应该用缓存依赖,但是问题是依赖项的参数我不知道怎么写,这个参数需要缓存对象所依赖的一组(到文件或目录的)文件路径。当这些资源中的任何一个更改时,缓存的对象即过时,并从缓存中移除。 
    我是远程URL读取的,没有XML路径啊!!
      

  4.   

    你看的是缓存文件,这里不使用。我估计应通过url参数(干脆就url也可以)进行缓存,简单的说,就是不同的url对应不同的缓存。如:
    http://www.taobao.com?id=231&catelog=book
    http://www.taobao.com?id=684&catelog=cloth
      

  5.   

    1."第一次刷新页面时候程序去读取远程地址,再次刷新则不去读取URL这样的缓存。另外由于我不是一个页面调用,"
    确保每个地方调用时,淘宝API返回生成的XML是一样的,则可以将该XML写入缓存中.(Application级的)
    如果不是,就应该用Session来保存(页面级的)
    2."淘宝的API还限制每分钟的读取频率,所以我想知道,有什么办法可以缓存读取的XML,因为这个读取的XML变化很小"
    如果每次读取都有变化(不论变化大小),该情况是不适合使用Cache的,Cache是把一些不常变化的对象保存到服务器的内存以备读取,加快读取时间.
    3."淘宝的API还限制每分钟的读取频率"
    因为淘宝API限制了每分钟读取的频率,因此楼主应该把一些常用的,不经常变化的调用所接收的XML缓存下来.
      

  6.   

    不管你依赖啥,你总要判断被依赖的对象是否变化吧,如何判断他是否变化了?那是不是要比较新的和旧的?新的哪来的?不是下载下来的么?简单的做法就是按照获得xml的url来缓存,一般这个url里面会有多个参数,这些参数将控制xml的内容,用这些做关键字来缓存,缓存设置为固定时间过期即可。