javascript - 'cache: false' 是否阻止缓存或对请求进行 UNIQUE-IFY 以绕过缓存?

标签 javascript jquery ajax caching backbone.js

如果我通过带有“cache: false”的ajax调用对资源发出多个请求,这是否会阻止浏览器使用请求 header (或其他方式)缓存每个响应,或者它绕过之前缓存的响应,因为资源 URL 由于 _=date 参数而变得唯一,因此永远不会匹配缓存中的任何内容?

作为引用,这里是关于 ajax 缓存属性的 jquery 文档: '如果设置为 false,它将强制浏览器不缓存所请求的页面。注意:将缓存设置为 false 只能正确处理 HEAD 和 GET 请求。它的工作原理是将“_={timestamp}”附加到 GET 参数。'

那么它真的“强制请求的页面不被缓存”吗?或者它只是通过附加日期来模仿这种效果 - 没有两个请求是相同的,因此发出了一个新的请求(但可怜的浏览器一直有一大堆缓存但从未使用过的响应)?

(如果我很想了解缓存的工作方式,请随时指导我!!(我假设它基本上是一个键值类型的系统,键是请求信息,值是响应该请求。))

最佳答案

是的,如果你设置cache: false,那么它只是在 url + params 之后附加 _={timestamp} 。

来自 jquery src :

cacheURL = s.url;

    // More options handling for requests with no content
    if ( !s.hasContent ) {

        // If data is available, append data to url
        if ( s.data ) {
            cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
            // #9682: remove data so that it's not used in an eventual retry
            delete s.data;
        }

        // Add anti-cache in url if needed
        if ( s.cache === false ) {
            s.url = rts.test( cacheURL ) ?

                // If there is already a '_' parameter, set its value
                cacheURL.replace( rts, "$1_=" + nonce++ ) :

                // Otherwise add one to the end
                cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
        }
    }

关于javascript - 'cache: false' 是否阻止缓存或对请求进行 UNIQUE-IFY 以绕过缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26591510/

相关文章:

javascript - Jquery: Uncaught RangeError: 超出最大调用堆栈大小

javascript - 添加超过 9 个元素时,我的 Javascript 函数无法正常工作

java - Servlet 组合来自两个不同请求和回复的数据?

javascript - 如何将 Net 中的日期时间转换为 JavaScript

javascript - 函数式编程风格增长数组循环

javascript - Internet Explorer 9 的 onClick 事件问题

jquery 在点击时显示伪元素

jquery - 为什么 $ ('.myClass' ).on ("input propertychange", function() {}) 总是在 $(document).on ("input propertychange", ".myClass", function() {)) 之前调用?

Javascript 和 CSS,在 HTML 中与在外部文件中

php - ckeditor textarea 的内容不通过 Ajax Jquery 发送