在微信公众号网页开发中,缓存问题是一个常见的挑战,尤其是在版本更新后,旧缓存可能导致用户看到过时的内容或功能异常。以下是一些有效的策略来避免版本更新后旧缓存影响用户体验:
html
<link rel="stylesheet" href="styles.css?v=1.0.1">
<script src="app.js?v=20231010"></script>
http
Cache-Control: max-age=31536000, immutable
max-age
指定资源的最大缓存时间,immutable
表示资源在有效期内不会改变,适合长期不变的资源。对于频繁更新的资源,可以设置较短的缓存时间或no-cache
。示例: ```javascript self.addEventListener('install', (event) => { event.waitUntil( caches.open('v1').then((cache) => { return cache.addAll([ '/styles.css', '/app.js' ]); }) ); });
self.addEventListener('activate', (event) => { event.waitUntil( caches.keys().then((cacheNames) => { return Promise.all( cacheNames.map((cacheName) => { if (cacheName !== 'v1') { return caches.delete(cacheName); } }) ); }) ); }); ```
javascript
if (window.location.search.indexOf('reload=true') === -1) {
window.location.search = 'reload=true';
}
http
GET /api/v1/data
javascript
if (localStorage.getItem('version') !== '1.0.1') {
alert('检测到新版本,请刷新页面以获取最新内容。');
localStorage.setItem('version', '1.0.1');
}
javascript
output: {
filename: '[name].[contenthash].js',
path: path.resolve(__dirname, 'dist')
}
通过以上策略,可以有效避免微信公众号网页更新后旧缓存影响用户体验。建议根据具体场景选择合适的方案,或结合多种方法以达到最佳效果。