无法禁用 jQuery 缓存

2024-05-26

Update

我发现这一定是缓存问题,但我无法关闭缓存。 这是我更改后的脚本:

<script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
        jQuery.ajaxSetup({
            // Disable caching of AJAX responses 
            cache: false
        });

        jQuery("#button1").click(function (e) {
            window.setInterval(refreshResult, 3000);
        });

        function refreshResult()
        {
            jQuery("#divResult").load("/Home/Refresh");
        }
</script>

它每 3 秒更新一次网页的一部分。它只在清除浏览器缓存后起作用一次,之后就不起作用了——每隔3秒向/Home/Refresh发出请求,从服务器发送数据,但网页上不显示任何内容;后续请求发送cookie ASP.NET_SessionId=wrkx1avgvzwozcn1frsrb2yh。 我正在使用 ASP.NET MVC 2 和 c#。

我的 jQuery 有问题,这是我的网络应用程序的工作原理

  • Search.aspx 网页包含一个表单和 jQuery 脚本,在用户单击“button1”按钮后,将数据发送到 Home 控制器中的 Search() 操作。

搜索.aspx:

<%@ Page Title="" Language="C#" 
    MasterPageFile="~/Views/Shared/Site.Master" 
    Inherits="System.Web.Mvc.ViewPage<GLSChecker.Models.WebGLSQuery>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Title  
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <h2>Search</h2>

    <% Html.EnableClientValidation(); %>

    <% using (Html.BeginForm()) {%>    
        <fieldset>
            <div class="editor-label">
                <%: Html.LabelFor(model => model.Url) %>
            </div>
            <div class="editor-field">
                <%: Html.TextBoxFor(model => model.Url, 
                    new { size = "50" } ) %>
                <%: Html.ValidationMessageFor(model => model.Url) %>
            </div>

            <div class="editor-label">
                <%: Html.LabelFor(model => model.Location) %>
            </div>
            <div class="editor-field">
                <%: Html.TextBoxFor(model => model.Location, 
                    new { size = "50" } ) %>
                <%: Html.ValidationMessageFor(model => model.Location) %>
            </div>

            <div class="editor-label">
                <%: Html.LabelFor(model => model.KeywordLines) %>
            </div>
            <div class="editor-field">
                <%: Html.TextAreaFor(model => model.KeywordLines, 10, 60, null)%>  
                <%: Html.ValidationMessageFor(model => model.KeywordLines)%>
            </div>

            <p>
                <input id ="button1" type="submit" value="Search" />
            </p>
        </fieldset>

    <% } %>

    <script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        jQuery("#button1").click(function (e) {
            window.setInterval(refreshResult, 5000);
        });

        function refreshResult()
        {
            jQuery("#divResult").load("/Home/Refresh");
        }
    </script>

   <div id="divResult"> 
   </div>

</asp:Content>


        [HttpPost]
        public ActionResult Search(WebGLSQuery queryToCreate)
        {
            if (!ModelState.IsValid)
                return View("Search");

            queryToCreate.Remote_Address = HttpContext.Request.ServerVariables["REMOTE_ADDR"];
            Session["Result"] = null;

            SearchKeywordLines(queryToCreate);

            Thread.Sleep(15000);

            return View("Search");
        }//Search()
  
  • 单击“button1”按钮后,Search.aspx 网页中的上述脚本将运行。

  • 控制器中的 Search() 操作运行较长时间。我模拟 通过放置 Thread.Sleep(15000); 进行测试在 Search() 操作中。

  • 5秒。按下提交按钮后,上面的 jQuery 脚本调用 Home 控制器中的 Refresh() 操作。



        public ActionResult Refresh()
        {               
            ViewData["Result"] = DateTime.Now;

            return PartialView();
        }
  
  • Refresh() 呈现此部分

问题在于,在 Internet Explorer 8 中,只有一个对 /Home/Refresh 的请求; 在 Firefox 3.6.3 中,所有对 /Home/Refresh 的请求都会发出,但网页上不会显示任何内容。 Firefox 的另一个问题是每秒都会发出对 /Home/Refresh 的请求,而不是每 5 秒发出一次。
我注意到,在清除 Firefox 缓存后,第一次按下 button1 时脚本运行良好,但之后就不起作用了。

如果有帮助的建议,我将不胜感激。


现在这个问题有点老了。但我遇到了一个问题,我认为与缓存有关,但结果是其他问题,我认为有人在某些时候可能会发现它有用。

我有一套类似这样的例程

  1. MAIN PAGE 通过.load 调用SUB PAGE。 子页面有数据输入表 以及启动 SQL PAGE 执行相关 sql 的超链接

  2. 将数据输入到子页面后 (通过主页),点击超链接 使用 SQL PAGE 更新数据库,然后刷新 包含子页面的主页面 div

嗯...几个小时以来我一直在输入数据,然后单击相关链接却发现 MAIN PAGE div 有时刷新,有时不刷新。但 F5 总是有效。所以我很确定我遇到了缓存问题。所以我停止使用 .load 并开始使用 .ajax,使用“cache: false”。我可以看到 .ajax 现在适当地随机化了 get url,但我的主页 div 仍然没有刷新。我确定我有缓存问题......

但我没有。

使用 Google Chrome 的开发工具 - 我可以看到有时我的 jQuery 例程完全按照预期执行,即

a) 单击子页面;执行SQL页;刷新主页分区

有时事情会按这个顺序发生......

b) 单击子页面;刷新主页 div;执行SQL页

我编写的代码是为了执行 a) 操作,但由于 SQL PAGE 需要一段时间才能执行,所以实际上发生了 b) 操作。 b) 很糟糕 - 我的主页 div 实际上正在刷新,但更新数据表的 SQL 在刷新之前并未执行。

一旦我意识到这一点,修复就很容易了。使用 .ajax,我实现了以下逻辑:

i) 单击子页面 ii) 执行SQL PAGE iii) 以成功执行 SQL PAGE 为条件(使用 .ajax 中的 'success:' 选项),然后刷新包含 SUB PAGE 的 MAIN PAGE div iv) 我将“cache: false”保留在原处,以防万一

此修复对于我的代码 100% 有效

因此,如果您绞尽脑汁地试图找出缓存无法关闭的原因,只需确保您确实遇到了缓存问题,而不是我上面描述的问题。

祝你好运

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法禁用 jQuery 缓存 的相关文章

  • JQuery UI Selectable 插件:当 div 溢出时使滚动条不可选择

    我有一个 div 设置为overflow auto 该 div 的内容是可选择的 使用 jQuery UI 当 div 溢出并出现滚动条时 滚动条本身变为可选择状态 因此滚动效果不佳 在 FF Chrome 中 我可以滚动 div 但我得到
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • 编辑第一个选项名称

    我有以下我无法访问的代码 我想要做的是将一些文本添加到现在为空的第一个选项中 诸如 选择地址 之类的文本
  • 使用单击事件调用“trigger”方法时的复选框值

    如何在点击事件中获取正确的当前值以通过触发器调用 Html
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小
  • Flot 库将 y 轴设置为最小值 0 和最大值 24

    如何将 y 轴设置在 0 到 24 的范围内 这是我的代码 j plot j placeholder d1 xaxis mode time min new Date 2010 11 01 getTime max new Date 2011
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • 如何使用mod_headers和mod_expires进行缓存

    我想在我的网站上缓存图像和其他文件 所以我所做的是确保 mod headers 和 mod expires 具有 usr sbin httpd l 然后将 htaccess 编辑为 ExpiresActive On ExpiresDefau
  • 如何为名称为数组的 jquery 表单验证插件创建规则?

    有谁知道当您有一个数组的名称属性时如何为 jquery 表单验证插件创建规则 eg
  • 如何为 HTML 元素创建鼠标拖动滑块?

    我发现的许多滑块插件要么仅单击以查看下一个图像 要么如果它们确实具有鼠标拖动或触摸拖动功能 则仅允许图像 有谁知道为任何 html 元素编写鼠标拖动滑块的插件或可能的方法 我专门使用 SVG 但将来如果能在 div 元素之间滑动就更好了 H
  • 使用 jquery .find() 获取子项

    我有以下标记 div div class item div class item box div class one div div div div class item div class item box div class one d
  • html 选择列表 - 通过传入变量获取文本值?

    我有一个显示列表语言的选择列表
  • 如何使用 JavaScript 创建链接?

    我有一个标题字符串和一个链接字符串 我不知道如何将两者放在一起以使用 JavaScript 在页面上创建链接 任何帮助表示赞赏 我试图解决这个问题的原因是因为我有一个 RSS 源并且有一个标题和 URL 列表 我想将标题链接到 URL 以使
  • jquery星级评分插件和jquery点击功能

    我正在使用 jquery 星级评分插件 http www fyneworks com jquery star rating http www fyneworks com jquery star rating 我可能会得到一些像这样的html
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • Jquery 数据表列总和

    我只是参考一下这个链接 https datatables net examples advanced init footer callback html了解如何获取 jquery 数据表中的列总计 但我已经完成了一半的项目 我在html页面
  • Firefox 不会在使用 jQuery AJAX 加载的内容上呈现 CSS 样式

    我有一个网站 允许用户对书籍和文章发表评论 主表单有一个搜索输入 用于查找相关书籍或文章 来源 我使用 jQuery 根据输入的搜索词从外部站点动态加载新源 然后还使用 AJAX 返回列表中的源 我有两个问题 现在 在用户输入四个字符后 j
  • 使用 Jquery 清除 5 个空 TD

    我有一个正在填充的动态表 我知道我不应该这样做 但是你会如何连续找到 5 个空 TD 并隐藏它们呢 因此 如果行包含 5 个空 TD 则不显示 TD 我想删除每个实例 td td td td td td td td td td 在 DOM
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 页面上使用 HTML Editor Extender 进行回发会导致 IE11 中出现 JavaScript 错误

    我已将 HTML 编辑器扩展程序添加到我正在处理的页面中 现在每当我在页面上发回帖子时 都会收到以下 Javascript 错误 JavaScript 运行时错误 参数无效 之后什么也没有发生 这在 IE10 或更低版本以及我所知道的所有其

随机推荐