如何清除頁面快取
(一)主頁面1。解決跨域通訊2。解決iframe每次url改變都能及時顯示不產生快取導致空白頁(請詳細檢視 forceUpdataIframe() 裡的程式碼)3。解決iframe的onload每次url改變都能觸發(請詳細檢視 watch()、mounted() 裡的程式碼)4。解決子頁面獲取token後未能及時重新整理自動登入問題(請詳細檢視 iframe。onload()、 sendToken() 裡的程式碼)5。解決準確友好的子頁面載入狀態提示(請詳細檢視 iframeInit() 裡的程式碼)
(二)子頁面1。接收父級 token 並存儲 token newPromise。js
import { setToken, getToken } from ‘@/utils/auth’ const promise = function () { return new Promise(async (resolve, reject) => { if (!getToken()) { window。addEventListener(‘message’, function (e) { if ((typeof e。data) === ‘string’) { setToken(JSON。parse(e。data)); resolve(true) } // resolve(true) //說明 本地聯調的時候開啟 釋出的時候要去掉 }) } else { resolve(true) } }) } export default promise
2。token過期時呼叫後端介面重新整理 token ,並向父級傳送 token 更新資訊,讓父級儲存新token request。js
import axios from ‘axios’ import { setToken, getToken } from ‘@/utils/auth’ const service = axios。create({ 。。。 }) // request interceptor service。interceptors。request。use(config => { 。。。 }) // response interceptor service。interceptors。response。use( response => { const res = response。data if (res。code === 600003) { refresh({ refreshToken: JSON。parse(getToken())。refreshToken || ‘’ })。then(res => { debugger if (res。code === 0) { let token = { ‘accessToken’: data。accessToken, ‘refreshToken’: data。refreshToken } setToken(token)//儲存賬戶actoken和refreshToken window。parent。postMessage(JSON。stringify(getToken()), ‘*’)//子頁面向父頁面傳送訊息 setTimeout(() => { window。location。reload() }, 1200) } }) } return res } )
3。掛載例項前呼叫接收訊息main。js
import promise from ‘。/newPromise。js’ // 掛載例項前呼叫接收訊息 promise()。then(() => { new Vue({ el: ‘#app’, router, store, render: h => h(App) }) })
(三)另附:auth。js token工具類函式封裝
import Cookies from ‘js-cookie’ const TokenKey = ‘my_token’ // 需要儲存token的 Cookies 字首名稱 export function getToken() { return Cookies。get(TokenKey) } export function setToken(token) { return Cookies。set(TokenKey, token) } export function removeToken() { return Cookies。remove(TokenKey) }