راکت

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

5 پاسخ

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

            });

        })
    );

});
parhamft
parhamft
@parham.ftehrani
ثبت پرسش جدید

پاسخ‌ها

5
اشکان نظری
اشکان نظری
@ashkannazari248

تخصص: برنامه نویس

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

        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
parhamft
@parham.ftehrani

تخصص: برنامه نویس لاراول

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

شاید پاسخ شما همین‌جا باشد

parhamft
parhamft
@parham.ftehrani

تخصص: برنامه نویس لاراول

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

اشکان نظری
اشکان نظری
@ashkannazari248

تخصص: برنامه نویس

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

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

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