DoneJS StealJS jQuery++ FuncUnit DocumentJS
3.14.1
5.0.0 4.3.0 2.3.35
  • About
  • Guides
  • API Docs
  • Community
  • Contributing
  • Bitovi
    • Bitovi.com
    • Blog
    • Design
    • Development
    • Training
    • Open Source
    • About
    • Contact Us
  • About
  • Guides
  • API Docs
    • Observables
      • can-compute
      • can-define
      • can-define/list/list
      • can-define/map/map
      • can-define-stream
      • can-define-stream-kefir
      • can-event
      • can-event/async/async
      • can-event/batch/batch
      • can-event/lifecycle/lifecycle
      • can-kefir
      • can-list
      • can-map
      • can-map-backup
      • can-map-define
      • can-observation
      • can-observe
      • can-simple-map
      • can-simple-observable
      • can-stream
      • can-stream-kefir
    • Data Modeling
      • can-connect
        • behaviors
          • ./base/
          • ./cache-requests/
          • ./can/constructor-hydrate/
          • ./can/map/
          • ./can/merge/
          • ./can/ref/
          • ./constructor/callbacks-once/
          • ./constructor/
          • ./constructor/store/
          • ./data/callbacks/
          • ./data/callbacks-cache/
          • ./data/combine-requests/
          • ./data/localstorage-cache/
          • ./data/memory-cache/
          • ./data/parse/
          • ./data/url/
          • ./data/worker/
          • ./fall-through-cache/
            • hydrators
              • hydrateInstance
              • hydrateList
            • data callbacks
              • getData
              • getListData
          • ./real-time/
        • modules
          • ./can/base-map/
          • ./can/model/
          • ./can/super-map/
          • ./can/tag/
          • ./helpers/map-deep-merge
          • ./helpers/weak-reference-map
        • data types
          • DataInterface
          • Instance
          • InstanceInterface
          • List
          • ListData
      • can-connect-cloneable
      • can-connect-feathers
      • can-connect-ndjson
      • can-connect-signalr
      • can-fixture
      • can-fixture-socket
      • can-ndjson-stream
      • can-set
    • Views
      • can-component
      • can-ejs
      • can-element
      • can-react-component
      • can-stache
      • can-stache/helpers/route
      • can-stache-bindings
      • can-stache-converters
      • can-view-autorender
      • can-view-callbacks
      • can-view-href
      • can-view-import
      • can-view-live
      • can-view-model
      • can-view-nodelist
      • can-view-parser
      • can-view-scope
      • can-view-target
      • react-view-model
      • react-view-model/component
      • steal-stache
    • Routing
      • can-deparam
      • can-param
      • can-route
      • can-route-pushstate
    • JS Utilities
      • can-assign
      • can-define-lazy-value
      • can-globals
      • can-key-tree
      • can-make-map
      • can-parse-uri
      • can-string
      • can-string-to-any
      • can-util
      • can-zone
      • can-zone-storage
    • DOM Utilities
      • can-ajax
      • can-attribute-encoder
      • can-control
      • can-dom-events
      • can-event-dom-enter
      • can-event-dom-radiochange
      • can-jquery
    • Data Validation
      • can-define-validate-validatejs
      • can-validate
      • can-validate-interface
      • can-validate-legacy
      • can-validate-validatejs
    • Typed Data
      • can-cid
      • can-construct
      • can-construct-super
      • can-namespace
      • can-reflect
      • can-reflect-promise
      • can-types
    • Polyfills
      • can-symbol
      • can-vdom
    • Core
    • Infrastructure
      • can-global
      • can-test-helpers
    • Ecosystem
    • Legacy
  • Community
  • Contributing
  • GitHub
  • Twitter
  • Chat
  • Forum
  • News
Bitovi

fall-through-cache

  • Edit on GitHub

A fall through cache that checks another cacheConnection.

fallThroughCache( baseConnection )

Implements a getData and getListData that check their cacheConnection for data and then in the background update the instance or list with data retrieved using the base connection.

Use

To use the fall-through-cache, create a connection with a cacheConnection and a behavior that implements getData and getListData.

var cache = connect([
  require("can-connect/data/localstorage-cache/localstorage-cache")
],{
  name: "todos"
});

var todoConnection = connect([
   require("can-connect/fall-through-cache/fall-through-cache"),
   require("can-connect/data/url/url"),
   require("can-connect/constructor/constructor"),
   require("can-connect/constructor/store/store")
  ], {
  url: "/todos",
  cacheConnection: cache
});

Then, make requests. If the cache has the data, it will be returned immediately, and then the item or list updated later with the response from the base connection:

todoConnection.getList({due: "today"}).then(function(todos){

})

Demo

The following shows the fall-through-cache behavior.

Clicking "Completed" or "Incomplete" will make one of the following requests and display the results in the page:

todoConnection.getList({completed: true});
todoConnection.getList({completed: false});

If you click back and forth between "Completed" and "Incomplete" multiple times you'll notice that the old data is displayed immediately and then updated after about a second.

CanJS is part of DoneJS. Created and maintained by the core DoneJS team and Bitovi. Currently 3.14.1.

On this page

Get help

  • Chat with us
  • File an issue
  • Ask questions
  • Read latest news