• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
    當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

    如何解決Ajax請(qǐng)求結(jié)果的緩存問(wèn)題說(shuō)明

    來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:41:35
    文檔

    如何解決Ajax請(qǐng)求結(jié)果的緩存問(wèn)題說(shuō)明

    如何解決Ajax請(qǐng)求結(jié)果的緩存問(wèn)題說(shuō)明:在默認(rèn)情況下,IE會(huì)針對(duì)請(qǐng)求地址緩存Ajax請(qǐng)求的結(jié)果。換句話說(shuō),在緩存過(guò)期之前,針對(duì)相同地址發(fā)起的多個(gè)Ajax請(qǐng)求,只有第一次會(huì)真正發(fā)送到服務(wù)端。在某些情況下,這種默認(rèn)的緩存機(jī)制并不是我們希望的(比如獲取實(shí)時(shí)數(shù)據(jù)),這篇文章就來(lái)簡(jiǎn)單地討論這個(gè)問(wèn)題,
    推薦度:
    導(dǎo)讀如何解決Ajax請(qǐng)求結(jié)果的緩存問(wèn)題說(shuō)明:在默認(rèn)情況下,IE會(huì)針對(duì)請(qǐng)求地址緩存Ajax請(qǐng)求的結(jié)果。換句話說(shuō),在緩存過(guò)期之前,針對(duì)相同地址發(fā)起的多個(gè)Ajax請(qǐng)求,只有第一次會(huì)真正發(fā)送到服務(wù)端。在某些情況下,這種默認(rèn)的緩存機(jī)制并不是我們希望的(比如獲取實(shí)時(shí)數(shù)據(jù)),這篇文章就來(lái)簡(jiǎn)單地討論這個(gè)問(wèn)題,

    在默認(rèn)情況下,IE會(huì)針對(duì)請(qǐng)求地址緩存Ajax請(qǐng)求的結(jié)果。換句話說(shuō),在緩存過(guò)期之前,針對(duì)相同地址發(fā)起的多個(gè)Ajax請(qǐng)求,只有第一次會(huì)真正發(fā)送到服務(wù)端。在某些情況下,這種默認(rèn)的緩存機(jī)制并不是我們希望的(比如獲取實(shí)時(shí)數(shù)據(jù)),這篇文章就來(lái)簡(jiǎn)單地討論這個(gè)問(wèn)題,以及介紹幾種解決方案。
    目錄
    一、問(wèn)題重現(xiàn)
    二、通過(guò)為URL地址添加后綴的方式解決問(wèn)題
    三、通過(guò)JQuery的Ajax設(shè)置解決問(wèn)題
    四、通過(guò)定制響應(yīng)解決問(wèn)題
    一、問(wèn)題重現(xiàn)
    我們通過(guò)一個(gè)ASP.NET MVC應(yīng)用來(lái)重現(xiàn)IE針對(duì)Ajax請(qǐng)求結(jié)果的緩存。在一個(gè)空ASP.NET MVC應(yīng)用中我們定義了如下一個(gè)默認(rèn)的HomeController,其中包含一個(gè)返回當(dāng)前時(shí)間的Action方法GetCurrentTime。
    代碼如下:
     public class HomeController : Controller
        {
            public ActionResult Index()
            {
                return View();
            }
            public string GetCurrentTime()
            {
               return DateTime.Now.ToLongTimeString();
           }
       }

    默認(rèn)Action方法Index對(duì)應(yīng)的View定義如下。我們每隔5秒鐘利用JQuery的方法以Ajax的方式調(diào)用GetCurrentTime操作,并將返回的結(jié)果顯示出來(lái)。
    代碼如下:
     <!DOCTYPE html>
        <html>
            <head>
                <title>@ViewBag.Title</title> 
                <script type="text/javascript" src="@Url.Coutent(“~/Scripts/jquery-1.7.1.min.js”)"></script>
                <script type="text/javascript">
                    $(function () {
                        window.setInterval(function () {
                            $.ajax({
                               url:'@Url.Action("GetCurrentTime")',
                               success: function (result) {
                                   $("ul").append("<li>" + result + "</li>");
                               }
                           });
                       }, 5000);
                   });
               </script>
           </head>
           <body>
               <ul></ul>
           </body>
       </html>

    采用不同的瀏覽器運(yùn)行該程序會(huì)得到不同的輸出結(jié)果,如下圖所示,Chrome瀏覽器中能夠顯示出實(shí)時(shí)時(shí)間,但是在IE中顯示的時(shí)間都是相同的。

    二、通過(guò)為URL地址添加后綴的方式解決問(wèn)題
    由于IE針對(duì)Ajax請(qǐng)求的返回的結(jié)果是根據(jù)請(qǐng)求地址進(jìn)行緩存的,所以如果不希望這個(gè)緩存機(jī)制生效,我們可以在每次請(qǐng)求時(shí)為請(qǐng)求地址添加不同的后綴來(lái)解決這個(gè)問(wèn)題。針對(duì)這個(gè)例子,我們通過(guò)如下的代碼為請(qǐng)求地址添加一個(gè)基于當(dāng)前時(shí)間的查詢字符串,再次運(yùn)行程序后IE中將會(huì)顯示實(shí)時(shí)的時(shí)間。
    代碼如下:
        <!DOCTYPE html>
        <html>
            <head>       
                <script type="text/javascript">
                    $(function () {
                        window.setInterval(function () {
                            $.ajax({
                                url:'@Url.Action("GetCurrentTime")?'+ new Date().toTimeString() ,
                                success: function (result) {
                                   $("ul").append("<li>" + result + "</li>");
                               }
                           });
                       }, 5000);
                   });
               </script>
           </head>
       </html>

    三、通過(guò)jQuery的Ajax設(shè)置解決問(wèn)題
    實(shí)際上jQuery具有針對(duì)這個(gè)的Ajax設(shè)置,我們只需要按照如下的方式調(diào)用$.ajaxSetup方法禁止掉Ajaz的緩存機(jī)制。
    代碼如下:
     <!DOCTYPE html>
        <html>
            <head>       
                <script type="text/javascript">
                    $(function () {
                        $.ajaxSetup({ cache: false });

                        window.setInterval(function () {
                            $.ajax({
                                url:'@Url.Action("GetCurrentTime")',
                               success: function (result) {
                                   $("ul").append("<li>" + result + "</li>");
                               }
                           });
                       }, 5000);
                   });
               </script>
           </head>
       </html>

    實(shí)際上jQuery的這個(gè)機(jī)制也是通過(guò)為請(qǐng)求地址添加不同的查詢字符串后綴來(lái)實(shí)現(xiàn)的,這可以通過(guò)Fiddler攔截的請(qǐng)求來(lái)證實(shí)。

    四、通過(guò)定制響應(yīng)解決問(wèn)題
    我們可以通過(guò)請(qǐng)求的響應(yīng)來(lái)控制瀏覽器針對(duì)結(jié)果的緩存,為此我們定義了如下一個(gè)名為NoCacheAttribute的ActionFilter。在實(shí)現(xiàn)的OnActionExecuted方法中,我們調(diào)用當(dāng)前HttpResponse的SetCacheability方法將緩存選項(xiàng)設(shè)置為NoCache。該NoCacheAttribute特性被應(yīng)用到GetCurrentTime方法后,運(yùn)行我們的程序在IE中依然可以得到實(shí)時(shí)的時(shí)間。
    代碼如下:
     public class HomeController : Controller
        {
            public ActionResult Index()
            {
                return View();
            }

            [NoCache]

            public string GetCurrentTime()
           {
               return DateTime.Now.ToLongTimeString();
           }
       }
       public class NoCacheAttribute : FilterAttribute, IActionFilter
       {
           public void OnActionExecuted(ActionExecutedContext filterContext)
           {
             filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
           }

           public void OnActionExecuting(ActionExecutingContext filterContext)
           {}
       }
     

    實(shí)際NoCacheAttribute特性最終控制消息消息的Cache-Control報(bào)頭,并將其設(shè)置為“no-cache”,指示瀏覽器不要對(duì)結(jié)果進(jìn)行緩存。如下所示的是針對(duì)GetCurrentTime請(qǐng)求的響應(yīng)消息:
    代碼如下:
     HTTP/1.1 200 OK
        Server: ASP.NET Development Server/10.0.0.0
        Date: Thu, 03 Jan 2013 12:54:56 GMT
        X-AspNet-Version: 4.0.30319
        X-AspNetMvc-Version: 4.0
        Cache-Control: no-cache

        Pragma: no-cache
        Expires: -1
        Content-Type: text/html; charset=utf-8
       Content-Length: 10
       Connection: Close

       8:54:56 PM

    靜守己心,看淡浮華

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    如何解決Ajax請(qǐng)求結(jié)果的緩存問(wèn)題說(shuō)明

    如何解決Ajax請(qǐng)求結(jié)果的緩存問(wèn)題說(shuō)明:在默認(rèn)情況下,IE會(huì)針對(duì)請(qǐng)求地址緩存Ajax請(qǐng)求的結(jié)果。換句話說(shuō),在緩存過(guò)期之前,針對(duì)相同地址發(fā)起的多個(gè)Ajax請(qǐng)求,只有第一次會(huì)真正發(fā)送到服務(wù)端。在某些情況下,這種默認(rèn)的緩存機(jī)制并不是我們希望的(比如獲取實(shí)時(shí)數(shù)據(jù)),這篇文章就來(lái)簡(jiǎn)單地討論這個(gè)問(wèn)題,
    推薦度:
    標(biāo)簽: 解決問(wèn)題 緩存 解決
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产一区麻豆剧传媒果冻精品| 无码精品视频一区二区三区| 免费精品久久久久久中文字幕 | 99精品视频在线观看| 精品国产不卡一区二区三区| 国产成人精品无码片区在线观看| 欧美成人精品欧美一级乱黄一区二区精品在线| 99精品视频在线| 久久青青草原精品国产| 四虎国产精品永免费| 国产va免费精品| 国内精品免费视频精选在线观看 | 国产在线精品免费aaa片| 日韩福利视频精品专区| 国产亚洲精品线观看动态图| 青青青国产精品国产精品久久久久| 国内精品久久久久影院日本| 色欲久久久天天天综合网精品| 欧美精品一区二区三区免费| 国产三级精品三级在专区| Aⅴ精品无码无卡在线观看| 91精品美女在线| 国产成人精品免费久久久久| 日本VA欧美VA欧美VA精品| 亚洲精品视频免费| 伊人 久久 精品| 亚洲精品宾馆在线精品酒店| 日韩精品无码免费视频| 久久伊人精品青青草原日本| 久久精品国产亚洲av瑜伽| 国内精品伊人久久久久网站| 国产精品美女网站| 国产成人精品午夜福麻豆| 国产成人精品久久一区二区三区av | 国产精品香蕉在线观看| 成人午夜精品亚洲日韩| 国产精品你懂的在线播放| 9191精品国产免费久久| 国产L精品国产亚洲区久久| 精品99久久aaa一级毛片| 日韩精品视频在线观看免费|