解决淘宝TOP API频率过高,页面空白,调用不到数据

来源:百度文库 编辑:神马文学网 时间:2024/05/03 05:02:30
解决淘宝TOP API频率过高,页面空白,调用不到数据 来源:淘宝网开放平台 发布时间:2010-03-23 浏览: 369人次  字体:[大 中 小]  解决淘宝TOP API频率过高,页面空白,调用不到数据,您是不是还在为调用API超过限制而苦恼? 是不是还在为网站空白获取不到数据而郁闷?
下面我们就来说说如何减少API调用次以及避免网站页面空白:

一.减少API调用

    我们都知道现在的API对每天,每分种都有一定的上限.一但超过这个上限就调不出任何数据,必须等到第二天才可以,所以尽量降低API的调用次数与频率才是关键. 为了解决这个种问题可以从以下几个方面进行处理:

    A. 降低程序的复杂程序,以减少对API的调用.
        
        比如在商品上显示店铺的信用,好评率等就需要再调用户相关的API进行获取, 虽然商品信息上多了一些资讯.但是增加了API调用次数,同时也降低了网站的打开速度. 建议去掉一些意义不大的信息来降低API的调用次数

    B.缓存API调用过的数据,以降低API的调用频率与次数
        
        缓存这种词大家再熟悉不过了, 缓存的好处我就不多说了.今天就来说说如何缓存API数据以加快页面显示,减少API调用.原理就不多说了.直接修改您的代码:

        1).如果您的程序是用淘宝官方的PHP DEMO 或 file_get_contents()函数来获取API数据.

            将
             $result = file_get_contents($url);

修改成:
            $cacheid=md5(preg_replace('/timestamp=([\d|-]+)([\d|:]+)/i','',$url));$dirpath = substr($cacheid,0,1); $file =substr($cacheid,0,1).'/'.$cacheid; $cachetime =24*3600;if(file_exists($file) && (time() - date('U',@filemtime($file))) < $cachetime){$result =@file_get_contents($file);}else{$result = @file_get_contents($url);@mkdir($dirpath);@file_put_contents($file,$result);}

这样您的同一个API,同样的参数每24小时才会去访问一次API,上面的变量我做一下说明:

            缓存ID: $cacheid 为每次调用API的参数所组成的MD5 由于timestamp会变化,所以timestamp不在其内

            保存的目录: $dirpath  为每个MD5的第一个字母,这样最多会生成36个目录

            保存的文件: $file 采用MD5直接做为缓存文件名

            缓存时间: $cachetime   24小时 X 3600 秒,也就是一天的时间,如果需要更长只需要将24调的更大一些


            凡是需要缓存的地方都用以上方法替换以后就可以缓存API结果了. 替换后您看看是不是页面打开更快了? API的调用次数也降下来了?

         2).如果您使用了taoapi.com上面的PHP SDK

        只需要在您调用API时,设置一下缓存时间就行

             $Taoapi->Cache->setCacheTime(24);

设置数据缓存的时间,单位:小时;0表示不缓存,不设置默认为 0