سلام دوستان
من برای pwa از serviceworker زیر استفاده میکنم ولی وقتی ورژن کش رو تغییر میدم تغییراتی که تو css سایت انجام دادم اعمال نمیشه در واقع باید کش قبلی رو پاک کنه و دوباره کش که که این اتفاق نمیفته
لطفا راهنمایی کنید کدوم قسمت اشتباهه که این کار انجام نمیشه
ممنون
var staticCacheName = 'test';
var version = 'v1.2.6::';
// Core files in cache
function updateStaticCache() {
return caches.open(version + staticCacheName).then(function (cache) {
console.log('vazneh cache opened');
return cache.addAll([
'/',
'public/css/framework7.css',
'public/css/style.css',
'public/css/swipebox.css',
'public/css/animations.css',
'public/js/jquery-1.10.1.min.js',
'public/js/jquery.validate.min.js',
'public/js/framework7.js',
'public/js/jquery.swipebox.js',
'public/js/jquery.fitvids.js',
'public/js/email.js',
'public/js/audio.min.js',
'public/js/my-app.js' ]);
});
};
self.addEventListener('install', function (event) {
event.waitUntil(updateStaticCache());
});
self.addEventListener('activate', function (event) {
event.waitUntil( caches.keys().then(function (keys) {
return Promise.all(keys.filter(function (key) {
return key.indexOf(version) !== 0;}).map(function (key) {
return caches.delete(key);
}));
}));
});
self.addEventListener('fetch', function (event) {
var request = event.request;
if (request.method !== 'GET')
{ event.respondWith(fetch(request).catch(function ()
{return caches.match('index.php');
}));
return;
}
if (request.headers.get('Accept').indexOf('text/html') !== -1) {
if (request.mode != 'navigate') {
request = new Request(request.url, {
method: 'GET',
headers: request.headers,
mode: request.mode,
credentials: request.credentials,
redirect: request.redirect
});
}
event.respondWith(
fetch(request).then(function (response) {
var copy = response.clone();
caches.open(version + staticCacheName).then(function(cache) {cache.put(request, copy);
});
return response;
})
.catch(function () {
return caches.match(request).then(function (response) {
return response || caches.match('index.php');
})
})
);
return;
} event.respondWith( caches.match(request).then(function (response) {
return response || fetch(request).catch(function () {
if (request.headers.get('Accept').indexOf('image') !== -1) {
return new Response('youre offline');
}
});
})
);
});
سلام. شما باید ورژن سایت رو ذخیره کنی و هر بارکه سایت بالا میاد چک کنی ببینی ورژن سایت با ورژن کاربر یکی هست یا نه. اگه یکی نبود اپدیت بزنی. مثلاً این شکلی
let current_version = require('../package').version;
let old_version = await localStorage.getItem('version');
if (old_version !== current_version) {
window.location.reload(true);
localStorage.setItem('version', current_version);
} else {
await localStorage.setItem('version', current_version);
await window.location.reload(true);
}
@ashkannazari248
من js بلد نیستم این اسکریپتی که دادید رو بزارو تو serviceworker?
بیشتر راهنمایی میکنید لطفا
@ashkannazari248
این کارو انجام دادم قسمت cache storage رو ریست میکنه جدید میسازه اما همچنان css های جدید رو کش نمیکنه قدیمیه رو کش میکنه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟