<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    狂淘

    www.kuangtao.net

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      6 隨筆 :: 185 文章 :: 68 評論 :: 0 Trackbacks
    您是不是還在為調用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

            具體的調用方式可以查看: http://www.taoapi.com/index.php/index/index/action/phpSdk


        C.靜態化更新頻率不高的頁面
            
            一些更新頻率不高的頁面可以采用靜態化頁面,這樣不僅對網站,API,服務器來說都是有好處的.具體的操作方式與緩存機制類同.這里我就不做重點了. 列一下相關的函數: ob_start();ob_get_contents();file_get_contents();file_put_contents();http_build_query();

            原理:
            
            根據URL檢測靜態面頁文件是否存在

           1)如果存在,并且沒有過期:

                終止程序運行,直接輸出該頁面文件

            2)如果存在,但已經過期:

                程序繼續運行.程序結束時用HTML內容替換現有的靜態頁面文件

            3)如果不存在:
                
                程序繼續運行.程序結束時用HTML內容建立一個新的靜態頁面文件

    二.避免網站頁面空白

        API加入了緩存以后調用次數下降了,但是當網絡忙或API接口繁忙時可能出現獲取不到數據而出現空白頁面.這時推薦大家采用一種最簡單的方式: 自動重試 和采用過期緩存

        1)自動重試:

           當通過API第一次沒有獲取到數據時,再次重新獲取,雖然會增加一次調用次數.但這是可接受的.因為沒有什么比給用戶看到空白頁面更糟糕的了,這里建議最好不要超過3次. 由于自動重試需要寫的代碼比較多這里就不列出來了, 知道原理后可以自己寫一個或者使用taoapi.com 上面的PHPSDK 支持自動重試,默認為3次
       
        2)采用過期緩存:

            如果做了緩存,在緩存更新時遇到沒有獲取數據(雖然這種情況非常少),就采用過期的緩存先給用戶.比起空白的頁面要好的多.在下一次用戶訪問時再重新更新緩存. 這樣只要用緩存存在,您的頁面永遠不會空白. 目前taoapi.com 上的PHP SDK暫時還不支持這種機制,但會在盡期內加入,敬請關注


    今天就先聊到這里,像內存緩存.數據庫緩存等這些以后有機會再和大家聊聊. 如果您在過程碰到疑問 歡迎前來找到討論, 我的旺旺:浪子arvin  QQ: 8769852,如果在API方面有其他問題推薦你先去taoapi.com測試一把,說不定問題就不是問題了,在此感謝您有耐心聽我說了這么久!
    www.kuangtao.net  淘寶網首頁
    posted on 2010-05-26 16:48 狂淘 閱讀(2224) 評論(0)  編輯  收藏 所屬分類: topApi

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 日本视频一区在线观看免费| 亚洲中文字幕无码久久精品1| 吃奶摸下高潮60分钟免费视频| 亚洲成a人片在线观看无码| 国产成人精品日本亚洲专区6| a级毛片毛片免费观看久潮喷| 国产美女无遮挡免费视频| 国产成人亚洲综合网站不卡| 国产91免费视频| 香蕉视频免费在线播放| 成年在线观看免费人视频草莓| 久久久久久久亚洲Av无码| 午夜免费福利视频| 亚洲精品无码久久久久sm| 中文字幕a∨在线乱码免费看 | 亚洲福利在线视频| 无码精品人妻一区二区三区免费| 女人18毛片a级毛片免费视频| 亚洲日韩亚洲另类激情文学| 国产大片线上免费观看| 亚洲jjzzjjzz在线播放| 久久久久久国产a免费观看黄色大片| 亚洲永久中文字幕在线| 91免费精品国自产拍在线不卡| 久久精品无码专区免费| 亚洲一区二区女搞男| 国产一级淫片a免费播放口| 久久青青成人亚洲精品| 免费视频成人片在线观看| 亚洲另类精品xxxx人妖| 天天天欲色欲色WWW免费| 国产白丝无码免费视频| 学生妹亚洲一区二区| 亚洲精品福利视频| 德国女人一级毛片免费| 午夜视频免费在线观看| 免费毛片在线看不用播放器| 亚洲国产日韩在线一区| 亚洲AV无码成人网站久久精品大 | 亚洲日韩精品无码专区| 4444亚洲国产成人精品|