#javascript #java #html #caching
#javascript #java #HTML #кэширование
Вопрос:
Я пытаюсь кэшировать страницы моего веб-приложения J2EE. Мне удается кэшировать страницы без каких-либо параметров. Но для страниц с параметрами ПОЛУЧЕНИЯ, добавленными в конце URL-адреса, я, похоже, не могу этого сделать.
Кто-нибудь может подсказать мне, как я могу кэшировать веб-страницу с параметрами get?
Ниже приведен мой код:
const cacheName = 'sailors-cache';
const domainurl = '/The_Sailors_Application/Application/';
const cacheAssets = [
domainurl 'images/logo.png',
domainurl 'report-surveyor-generalinfo.html',
domainurl 'report-surveyor-timelog.html',
domainurl 'report-surveyor-acknowledgement.html',
domainurl 'report-surveyor-barge.html',
domainurl 'report-surveyor-bunker-condition.html',
domainurl 'report-surveyor-bunker-condition2.html',
domainurl 'report-surveyor-statement.html',
domainurl 'report-surveyor-sealchecklist.html',
domainurl 'report-surveyor-samplingreport.html',
domainurl 'report-surveyor-vessel-measurement-report.html',
domainurl 'report-surveyor-finalreport.html',
domainurl 'report-surveyor-mass-flow-meter.html',
domainurl 'report-surveyor-cargo.html',
domainurl 'report-surveyor-checklist.html',
domainurl 'report-surveyor-feedback.html',
domainurl 'report-pictures.html',
domainurl 'signature.html',
domainurl 'assets/css/bootstrap.min.css',
domainurl 'assets/css/normalize.css',
domainurl 'assets/css/font-awesome.min.css',
domainurl 'assets/css/themify-icons.css',
domainurl 'assets/scss/style.css',
domainurl 'assets/js/vendor/jquery-2.1.4.min.js',
domainurl 'assets/js/plugins.js',
domainurl 'assets/js/widgets.js'
];
// Call Install Event
self.addEventListener('install', e => {
console.log('Service Worker: Installed');
e.waitUntil(
caches
.open(cacheName)
.then(cache => {
console.log('Service Worker: Caching Files');
cache.addAll(cacheAssets);
})
.then(() => self.skipWaiting())
);
});
// Call Activate Event
self.addEventListener('activate', e => {
console.log('Service Worker: Activated');
// Remove unwanted caches
e.waitUntil(
caches.keys().then(cacheNames => {
return Promise.all(
cacheNames.map(cache => {
if (cache !== cacheName) {
console.log('Service Worker: Clearing Old Cache');
return caches.delete(cache);
}
})
);
})
);
});
// Call Fetch Event
self.addEventListener('fetch', e => {
console.log('Service Worker: Fetching');
e.respondWith(fetch(e.request).catch(() => caches.match(e.request)));
});
Пример веб-страницы URL, которую я хочу кэшировать, — это:
domainurl ‘report-surveyor-generalinfo.html ?referenceNumber=YF-1223-19’,
Спасибо.
Комментарии:
1. пожалуйста, вставьте свой код, показывающий, как вы добавляете URL-адрес в кэш, какой ожидаемый URL-адрес и какой фактический URL
2. @MuhammedImranHussain Привет, я отредактировал
3. В контексте вашего кода ваш динамический URL-адрес / параметр не кэшируется. Вам нужно сопоставить URL-адрес при извлечении, и если он не совпадает, поместите его в кэш, а затем верните, чтобы в следующий раз он был отправлен из кэша. Подробности вы найдете здесь developers.google.com/web/ilt/pwa /… под заголовком «В сетевом ответе»
4. @MuhammedImranHussain извините, я не совсем понимаю. можете ли вы объяснить еще раз?
5. Ваш код кэширован report-surveyor-generalinfo.html но не report-surveyor-generalinfo.html ? Ссылочный номер=YF-1223-19. Я предполагаю, что здесь referenceNumber является переменной. Таким образом, вы можете кэшировать этот URL-адрес при взаимодействии с пользователем, например, при нажатии на ссылку или реализовать кэширование при ответе сети. В этом документе упоминаются как взаимодействие с пользователем, так и кэширование при ответе сети developers.google.com/web/ilt/pwa /…