mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Merge pull request #4192 from overleaf/jpa-clear-state
[misc] serviceWorker: clear client state GitOrigin-RevId: c5b48c20e8482c1a673d15fe65d5b73ad1e00e43
This commit is contained in:
parent
c12fc1293d
commit
25d3231ce7
1 changed files with 22 additions and 1 deletions
|
@ -5,6 +5,7 @@ const OError = require('@overleaf/o-error')
|
||||||
// adjusting metrics collection.
|
// adjusting metrics collection.
|
||||||
const VERSION = 2
|
const VERSION = 2
|
||||||
|
|
||||||
|
const CLEAR_CACHE_REQUEST_MATCHER = /^\/project\/[0-9a-f]{24}\/output$/
|
||||||
const COMPILE_REQUEST_MATCHER = /^\/project\/[0-9a-f]{24}\/compile$/
|
const COMPILE_REQUEST_MATCHER = /^\/project\/[0-9a-f]{24}\/compile$/
|
||||||
const PDF_REQUEST_MATCHER = /^\/project\/[0-9a-f]{24}\/.*\/output.pdf$/
|
const PDF_REQUEST_MATCHER = /^\/project\/[0-9a-f]{24}\/.*\/output.pdf$/
|
||||||
const PDF_JS_CHUNK_SIZE = 128 * 1024
|
const PDF_JS_CHUNK_SIZE = 128 * 1024
|
||||||
|
@ -56,9 +57,14 @@ function getClientContext(clientId) {
|
||||||
*/
|
*/
|
||||||
function registerPdfContext(clientId, path, pdfContext) {
|
function registerPdfContext(clientId, path, pdfContext) {
|
||||||
const clientContext = getClientContext(clientId)
|
const clientContext = getClientContext(clientId)
|
||||||
const { pdfs, metrics, cached } = clientContext
|
const { pdfs, metrics, cached, clsiServerId } = clientContext
|
||||||
pdfContext.metrics = metrics
|
pdfContext.metrics = metrics
|
||||||
pdfContext.cached = cached
|
pdfContext.cached = cached
|
||||||
|
if (pdfContext.clsiServerId !== clsiServerId) {
|
||||||
|
// VM changed, this invalidates all browser caches.
|
||||||
|
clientContext.clsiServerId = pdfContext.clsiServerId
|
||||||
|
cached.clear()
|
||||||
|
}
|
||||||
// we only need to keep the last 3 contexts
|
// we only need to keep the last 3 contexts
|
||||||
for (const key of pdfs.keys()) {
|
for (const key of pdfs.keys()) {
|
||||||
if (pdfs.size < 3) {
|
if (pdfs.size < 3) {
|
||||||
|
@ -162,9 +168,24 @@ function onFetch(event) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
event.request.method === 'DELETE' &&
|
||||||
|
path.match(CLEAR_CACHE_REQUEST_MATCHER)
|
||||||
|
) {
|
||||||
|
return processClearCacheRequest(event)
|
||||||
|
}
|
||||||
|
|
||||||
// other request, ignore
|
// other request, ignore
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {FetchEvent} event
|
||||||
|
*/
|
||||||
|
function processClearCacheRequest(event) {
|
||||||
|
CLIENT_CONTEXT.delete(event.clientId)
|
||||||
|
// use default request proxy.
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {FetchEvent} event
|
* @param {FetchEvent} event
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue