Skip to content
This repository has been archived by the owner on Jul 28, 2018. It is now read-only.

Commit

Permalink
Display a cached copy of a page if available before fetching its repl…
Browse files Browse the repository at this point in the history
…acement
  • Loading branch information
smidwap committed Jan 7, 2014
1 parent 53b7b6e commit 9304d24
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions lib/assets/javascripts/turbolinks.js.coffee
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -10,11 +10,18 @@ createDocument = null
xhr = null xhr = null




fetchReplacement = (url) -> fetch = (url) ->
rememberReferer() rememberReferer()
cacheCurrentPage() cacheCurrentPage()
reflectNewUrl url reflectNewUrl url


if cachedPage = pageCache[url]
fetchHistory cachedPage
fetchReplacement url
else
fetchReplacement url, resetScrollPosition

fetchReplacement = (url, onLoadFunction = =>) ->
triggerEvent 'page:fetch', url: url triggerEvent 'page:fetch', url: url


xhr?.abort() xhr?.abort()
Expand All @@ -29,7 +36,7 @@ fetchReplacement = (url) ->
if doc = processResponse() if doc = processResponse()
changePage extractTitleAndBody(doc)... changePage extractTitleAndBody(doc)...
reflectRedirectedUrl() reflectRedirectedUrl()
resetScrollPosition() onLoadFunction()
triggerEvent 'page:load' triggerEvent 'page:load'
else else
document.location.href = url document.location.href = url
Expand All @@ -40,7 +47,6 @@ fetchReplacement = (url) ->
xhr.send() xhr.send()


fetchHistory = (cachedPage) -> fetchHistory = (cachedPage) ->
cacheCurrentPage()
xhr?.abort() xhr?.abort()
changePage cachedPage.title, cachedPage.body changePage cachedPage.title, cachedPage.body
recallScrollPosition cachedPage recallScrollPosition cachedPage
Expand Down Expand Up @@ -282,6 +288,7 @@ installJqueryAjaxSuccessPageUpdateTrigger = ->
installHistoryChangeHandler = (event) -> installHistoryChangeHandler = (event) ->
if event.state?.turbolinks if event.state?.turbolinks
if cachedPage = pageCache[event.state.url] if cachedPage = pageCache[event.state.url]
cacheCurrentPage()
fetchHistory cachedPage fetchHistory cachedPage
else else
visit event.target.location.href visit event.target.location.href
Expand Down Expand Up @@ -317,7 +324,7 @@ if browserSupportsCustomEvents
installJqueryAjaxSuccessPageUpdateTrigger() installJqueryAjaxSuccessPageUpdateTrigger()


if browserSupportsTurbolinks if browserSupportsTurbolinks
visit = fetchReplacement visit = fetch
initializeTurbolinks() initializeTurbolinks()
else else
visit = (url) -> document.location.href = url visit = (url) -> document.location.href = url
Expand Down

0 comments on commit 9304d24

Please sign in to comment.