parhamft
4 سال پیش توسط parhamft مطرح شد
5 پاسخ

آپدیت کش با تغییر ورژن pwa

سلام دوستان
من برای 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');
                }

            });

        })
    );

});

ثبت پرسش جدید
اشکان نظری
تخصص : برنامه نویس
@ashkannazari248 4 سال پیش مطرح شد
0

سلام. شما باید ورژن سایت رو ذخیره کنی و هر بارکه سایت بالا میاد چک کنی ببینی ورژن سایت با ورژن کاربر یکی هست یا نه. اگه یکی نبود اپدیت بزنی. مثلاً این شکلی

        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);
        }

parhamft
تخصص : برنامه نویس لاراول
@parham.ftehrani 4 سال پیش مطرح شد
0

@ashkannazari248
من js بلد نیستم این اسکریپتی که دادید رو بزارو تو serviceworker?
بیشتر راهنمایی میکنید لطفا


اشکان نظری
تخصص : برنامه نویس
@ashkannazari248 4 سال پیش مطرح شد
parhamft
تخصص : برنامه نویس لاراول
@parham.ftehrani 4 سال پیش مطرح شد
0

@ashkannazari248
این کارو انجام دادم قسمت cache storage رو ریست میکنه جدید میسازه اما همچنان css های جدید رو کش نمیکنه قدیمیه رو کش میکنه


اشکان نظری
تخصص : برنامه نویس
@ashkannazari248 4 سال پیش مطرح شد
0

کدتون رو بزارید


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام