<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        ajax 緩存 問題 requestheader

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:52:31
        文檔

        ajax 緩存 問題 requestheader

        ajax 緩存 問題 requestheader:這樣是為了減少頻繁訪問服務器對其造成不必要的負擔,但是同時也帶來了一定特殊業(yè)務邏輯滿足不了的問題。 例如: 需要通過前臺一個select下拉列表來作為ajax的觸發(fā)入口,同時將server返回的信息呈現(xiàn)在頁面,并且往session或者數(shù)據(jù)庫里面更新一些實際的東西的
        推薦度:
        導讀ajax 緩存 問題 requestheader:這樣是為了減少頻繁訪問服務器對其造成不必要的負擔,但是同時也帶來了一定特殊業(yè)務邏輯滿足不了的問題。 例如: 需要通過前臺一個select下拉列表來作為ajax的觸發(fā)入口,同時將server返回的信息呈現(xiàn)在頁面,并且往session或者數(shù)據(jù)庫里面更新一些實際的東西的

        這樣是為了減少頻繁訪問服務器對其造成不必要的負擔,但是同時也帶來了一定特殊業(yè)務邏輯滿足不了的問題。
        例如:
          需要通過前臺一個select下拉列表來作為ajax的觸發(fā)入口,同時將server返回的信息呈現(xiàn)在頁面,并且往session或者數(shù)據(jù)庫里面更新一些實際的東西的邏輯操作。
        當?shù)谝淮吻袚Q選項,也就是提交請求的時候一切都是正常的,但是如果切換相同選項因為瀏覽器的緩存原因,將不會走到server,實際得到的動態(tài)信息是從緩存中去取的。造成后臺的邏輯沒有被走到。代碼如下:
        aspx相關代碼
        代碼如下:

        <asp:DropDownList ID="ddlProductList" runat="server">
        <asp:ListItem Value="" Selected="True"></asp:ListItem>
        <asp:ListItem Value="null">積立利率変動型終身保険</asp:ListItem>
        <asp:ListItem Value="QIWL">  ・QIWL(H9)</asp:ListItem>
        <asp:ListItem Value="KIWL">  ・KIWL(H11)</asp:ListItem>
        <asp:ListItem Value="JIWL">  ・JIWL(H15)</asp:ListItem>
        <asp:ListItem Value="null">積立利率変動型終身保険(市場金利連動型)</asp:ListItem>
        <asp:ListItem Value="IIWL">  ・IIWL</asp:ListItem>
        <asp:ListItem Value="HIWL">  ・HIWL</asp:ListItem>
        <asp:ListItem Value="null">積立利率変動型終身保険(貯蓄重視型)</asp:ListItem>
        <asp:ListItem Value="KIWLS">  ・KIWLS</asp:ListItem>
        <asp:ListItem Value="null">ドル建積立利率変動型終身保険</asp:ListItem>
        <asp:ListItem Value="ODIWL">  ・ODIWL</asp:ListItem>
        <asp:ListItem Value="JDIWL">  ・JDIWL</asp:ListItem>
        <asp:ListItem Value="HDIWL">  ・HDIWL</asp:ListItem>
        <asp:ListItem Value="null"> 積立利率変動型養(yǎng)老保険(貯蓄重視型 米ドル建) </asp:ListItem>
        <asp:ListItem Value="JDISE">  ・JDISE</asp:ListItem>
        </asp:DropDownList>

        aspx.cs代碼
        代碼如下:

        if (!IsPostBack)
        {
        //為doropdownlist添加客戶端事件
        ddlProductList.Attributes.Add("onchange", "selectChange(this)");
        }

        Ajax.js代碼
        代碼如下:

        var request;
        function selectChange(obj) {
        createHttpRequest();
        var url = "AjaxService.aspx?product=" + obj.value;
        request.open("GET",url,true)
        request.onreadystatechange = resetRate;
        request.send();
        return false;
        }
        function createHttpRequest () {
        if (window.ActiveXObject) {
        request = new ActiveXObject("Microsoft.XMLHTTP");
        } else if (window.XMLHttpRequest) {
        request = new XMLHttpRequest();
        }
        }
        function resetRate() {
        if (request.readyState == 4) {
        if (request.responseText.substring(0,1) == "#") {
        document.getElementById("systemErrorMsg").innerHTML = request.responseText.substring(1);
        document.getElementById("rate").innerHTML = "";
        } else {
        document.getElementById("rate").innerHTML = request.responseText;
        document.getElementById("systemErrorMsg").innerHTML = "";
        }
        }
        }

        請求頁面代碼
        代碼如下:

        protected void Page_Load(object sender, EventArgs e)
        {
        string productShortName = Request.QueryString["product"];
        if (productShortName != null && productShortName != "null" )
        {
        string result = Utility.GetProductRate(packageName);
        Session["rate"] = result;
        Response.Write(result);
        }
        }

        經(jīng)過分析問題出在XmlHttpRequest這個對象上面,切換選項后,并不是每次走到請求頁面的邏輯中。查詢了相關資料解決方案如下:
        request.setRequestHeader("If-Modified-Since","0");
        簡單的說,Last-Modified 與If-Modified-Since 都是用于記錄頁面最后修改時間的 HTTP 頭信息,只是 Last-Modified 是由服務器往客戶端發(fā)送的 HTTP 頭,而 If-Modified-Since 則是由客戶端往服務器發(fā)送的頭,可 以看到,再次請求本地存在的 cache 頁面時,客戶端會通過 If-Modified-Since 頭將先前服務器端發(fā)過來的 Last-Modified 最后修改時間戳發(fā)送回去,這是為了讓服務器端進行驗證,通過這個時間戳判斷客戶端的頁面是否是最新的,如果不是最新的,則返回新的內(nèi)容,如果是最新的,則 返回 304 告訴客戶端其本地 cache 的頁面是最新的,于是客戶端就可以直接從本地加載頁面了,這樣在網(wǎng)絡上傳輸?shù)臄?shù)據(jù)就會大大減少,同時也減輕了服務器的負擔。
        另外還有另一個解決放案,不過還未經(jīng)測試,理論上應該是可行的,就是在請求頁面設置一下response的header:
        Response.AddHeader("Cache-control", "no-cache");

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

        文檔

        ajax 緩存 問題 requestheader

        ajax 緩存 問題 requestheader:這樣是為了減少頻繁訪問服務器對其造成不必要的負擔,但是同時也帶來了一定特殊業(yè)務邏輯滿足不了的問題。 例如: 需要通過前臺一個select下拉列表來作為ajax的觸發(fā)入口,同時將server返回的信息呈現(xiàn)在頁面,并且往session或者數(shù)據(jù)庫里面更新一些實際的東西的
        推薦度:
        標簽: 緩存 問題 request
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产亚洲精品影视在线| 久久久久亚洲AV成人网人人软件| 全部免费毛片在线播放| 国产在线观看免费视频软件| AAAAA级少妇高潮大片免费看| 国产日韩久久免费影院| 久久国产乱子伦精品免费午夜| 免费无码国产在线观国内自拍中文字幕| 在线观看亚洲电影| 免费大片av手机看片高清| 又大又硬又粗又黄的视频免费看 | 亚洲日本va在线视频观看| 亚洲熟女乱综合一区二区| 国产亚洲一区二区三区在线不卡| 久久久久亚洲精品天堂久久久久久| 久久亚洲色一区二区三区| 国产精品亚洲片在线观看不卡| 亚洲爆乳无码一区二区三区| 亚洲日本中文字幕| 亚洲日产2021三区| 中文字幕在线观看亚洲日韩| 亚洲AV日韩AV永久无码色欲| 日本黄页网址在线看免费不卡| xvideos永久免费入口| 日韩免费观看一区| 国产妇乱子伦视频免费| 成年女人午夜毛片免费视频| 国产一区二区三区免费在线观看 | 最近中文字幕国语免费完整 | 三级片免费观看久久| 丝袜足液精子免费视频| 99久热只有精品视频免费观看17| 成人在线免费看片| 四虎永久精品免费观看| 亚洲精品无码AV人在线播放| 亚洲成a人片7777| 久久久久亚洲精品无码网址色欲| 成年免费a级毛片免费看无码| 最近中文字幕完整版免费高清| 在线a毛片免费视频观看| 亚洲日韩欧洲无码av夜夜摸|