解决淘宝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
下面我们就来说说如何减少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
解决淘宝TOP API频率过高,页面空白,调用不到数据
extern \调用系统API
[逐浪者] @Joomlar,the user group for joomla! - 空白显示页面问题的解决
使用JNA 调用WINDOWS API
在Webpage上调用Windows Messenger API
Visual Basic中调用MSN API函数
C#中调用Windows API的要点
基础类的DSP/BIOS API调用
基础类的DSP/BIOS API调用
在Webpage上调用Windows Messenger API
通过Web Service调用Google SOAP Search API
使用调用外部程序函数实现API函数高级功能
如何调用 MessageBeep API 来播放系统警报.wav 声音
一条人性化设计的代码,top回到页面顶部
一条人性化设计的代码,top回到页面顶部
matlab函数调用及数据传递(转载)
Excel中如何调用SQL数据
看图淘宝,淘宝画报采集,淘宝客程序,非API
用有啊助手导入淘宝数据
淘宝开店货源怎么解决
淘宝开店货源怎么解决
<空白、>
API
VB vfp中调用API函数创建和使用逻辑字体