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

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

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

    狂淘

    www.kuangtao.net

       :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      6 隨筆 :: 185 文章 :: 68 評論 :: 0 Trackbacks
    您是不是還在為調(diào)用API超過限制而苦惱? 是不是還在為網(wǎng)站空白獲取不到數(shù)據(jù)而郁悶?
    下面我們就來說說如何減少API調(diào)用次以及避免網(wǎng)站頁面空白:

    一.減少API調(diào)用

        我們都知道現(xiàn)在的API對每天,每分種都有一定的上限.一但超過這個上限就調(diào)不出任何數(shù)據(jù),必須等到第二天才可以,所以盡量降低API的調(diào)用次數(shù)與頻率才是關(guān)鍵. 為了解決這個種問題可以從以下幾個方面進(jìn)行處理:

        A. 降低程序的復(fù)雜程序,以減少對API的調(diào)用.
            
            比如在商品上顯示店鋪的信用,好評率等就需要再調(diào)用戶相關(guān)的API進(jìn)行獲取, 雖然商品信息上多了一些資訊.但是增加了API調(diào)用次數(shù),同時也降低了網(wǎng)站的打開速度. 建議去掉一些意義不大的信息來降低API的調(diào)用次數(shù)

        B.緩存API調(diào)用過的數(shù)據(jù),以降低API的調(diào)用頻率與次數(shù)
            
            緩存這種詞大家再熟悉不過了, 緩存的好處我就不多說了.今天就來說說如何緩存API數(shù)據(jù)以加快頁面顯示,減少API調(diào)用.原理就不多說了.直接修改您的代碼:

            1).如果您的程序是用淘寶官方的PHP DEMO 或 file_get_contents()函數(shù)來獲取API數(shù)據(jù).

                將
                 $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,同樣的參數(shù)每24小時才會去訪問一次API,上面的變量我做一下說明:

                緩存ID: $cacheid 為每次調(diào)用API的參數(shù)所組成的MD5 由于timestamp會變化,所以timestamp不在其內(nèi)

                保存的目錄: $dirpath  為每個MD5的第一個字母,這樣最多會生成36個目錄

                保存的文件: $file 采用MD5直接做為緩存文件名

                緩存時間: $cachetime   24小時 X 3600 秒,也就是一天的時間,如果需要更長只需要將24調(diào)的更大一些


                凡是需要緩存的地方都用以上方法替換以后就可以緩存API結(jié)果了. 替換后您看看是不是頁面打開更快了? API的調(diào)用次數(shù)也降下來了?

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

            只需要在您調(diào)用API時,設(shè)置一下緩存時間就行

                 $Taoapi->Cache->setCacheTime(24);
    設(shè)置數(shù)據(jù)緩存的時間,單位:小時;0表示不緩存,不設(shè)置默認(rèn)為 0

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


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

            原理:
            
            根據(jù)URL檢測靜態(tài)面頁文件是否存在

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

                終止程序運(yùn)行,直接輸出該頁面文件

            2)如果存在,但已經(jīng)過期:

                程序繼續(xù)運(yùn)行.程序結(jié)束時用HTML內(nèi)容替換現(xiàn)有的靜態(tài)頁面文件

            3)如果不存在:
                
                程序繼續(xù)運(yùn)行.程序結(jié)束時用HTML內(nèi)容建立一個新的靜態(tài)頁面文件

    二.避免網(wǎng)站頁面空白

        API加入了緩存以后調(diào)用次數(shù)下降了,但是當(dāng)網(wǎng)絡(luò)忙或API接口繁忙時可能出現(xiàn)獲取不到數(shù)據(jù)而出現(xiàn)空白頁面.這時推薦大家采用一種最簡單的方式: 自動重試 和采用過期緩存

        1)自動重試:

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

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


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

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产免费人人看大香伊| 久久精品国产亚洲AV麻豆~| 亚洲导航深夜福利| jizz中国免费| 麻豆国产VA免费精品高清在线| 亚洲av无码不卡一区二区三区| 老湿机一区午夜精品免费福利| 一个人看的www在线观看免费| 亚洲av最新在线网址| 免费人成视频在线播放| 成人免费毛片内射美女APP| 久久亚洲精品国产精品| 精品乱子伦一区二区三区高清免费播放 | 高清永久免费观看| 国产免费久久精品| 亚洲精品无码久久| 亚洲人成图片网站| 午夜视频免费在线观看| JLZZJLZZ亚洲乱熟无码| 国产成人综合久久精品亚洲| 女人张腿给男人桶视频免费版 | 国产小视频在线观看免费| 亚洲国产av美女网站| 免费一级毛片在线播放视频| 国产亚洲精品免费视频播放| 美女18一级毛片免费看| 暖暖在线日本免费中文| 亚洲AV无码无限在线观看不卡| 亚洲免费电影网站| 中文字幕亚洲精品资源网| 精品成人免费自拍视频| 亚洲午夜福利717| 国产黄在线观看免费观看不卡| 免费在线观看黄色毛片| 日本亚洲高清乱码中文在线观看| 韩国免费三片在线视频| jiz zz在亚洲| 大香人蕉免费视频75| 亚洲欧美成人av在线观看| 18禁无遮挡无码网站免费| 2020天堂在线亚洲精品专区|