我正在使用 Vue cli 3 并使用 PWA 插件创建了一个 PWA。这一切都运行得很好,我在 3G 连接上获得了 100 分的 Lighthouse Progressive Webb 应用程序得分和 68 分的性能得分。
影响我的性能分数的问题是我未能“使用有效的缓存策略提供静态资产”。
我还在 webPageTest.org 上测试了该应用程序,它表明“利用浏览器缓存静态资产”存在问题
我的网站是https://www.istimuli.com/ 我假设我必须使用运行时缓存来缓存这些文件。我使用 GenerateSW 插件并尝试了 runtimeCaching 选项,但它不起作用。
我非常感谢任何帮助缓存这些文件并获得更高的性能分数。
谢谢
这是我的 vue.config.js 文件
const { GenerateSW } = require('workbox-webpack-plugin');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const PurgecssPlugin = require('purgecss-webpack-plugin');
// var HtmlWebpackPlugin = require('html-webpack-plugin');
const glob = require('glob-all');
const path = require('path');
module.exports = {
pwa: {
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
},
{
test: /\.css$/,
// use: [
// {
// loader: MiniCssExtractPlugin.loader,
// },
// "css-loader"
// ]
use: [
'style-loader',
{
loader: 'css-loader', options: {
minimize: true
}
}
]
}
]
},
plugins: [
new VueLoaderPlugin(),
new MiniCssExtractPlugin(),
new PurgecssPlugin({
paths: glob.sync([
path.join(__dirname, './public/index.html'),
path.join(__dirname, './src/assets/myJavascript/*.js'),
path.join(__dirname, './src/assets/css/*.css'),
path.join(__dirname, './src/components/*.vue'),
path.join(__dirname, './src/plugins/*.js'),
path.join(__dirname, './src/*.js'),
path.join(__dirname, './src/*.vue'),
])
}),
new GenerateSW({
runtimeCaching: [
{
urlPattern: new RegExp('^https://cors\.sdk.amazonaws.com/'),
handler: 'staleWhileRevalidate',
options: {
cacheableResponse: {
statuses: [0, 200]
}
}
},
{
urlPattern: /manifest/,
handler: 'staleWhileRevalidate',
options: {
expiration: {
maxEntries: 5,
maxAgeSeconds: 60 * 60 * 24 * 7,
}
}
}
]
})
],
}
}
已编辑
所以我编辑了我的服务器的 htaccess 文件以应用缓存控制:
我现在只有要处理的 aws sdk 文件。我假设CORS与此有关。因此,我们将不胜感激有关如何缓存此内容的任何帮助。
此外,检查灯塔报告,我看到 aws sdk 被指示为没有有效的缓存策略 - 我假设这也与上述 CORS 问题有关?
列出了 11 个资源(我只在图像中包括了 3 个),所有资源都被列为具有 30 天的缓存寿命。这是否足够或应该更长以获得更好的灯塔分数?
我注意到字体文件(带有 woff2 扩展名)现在被浏览器缓存,即使我在修改 htaccess 文件时没有包含这个扩展名(见上文)。我觉得这很混乱,知道为什么它现在缓存而不是缓存在我更新 htaccess 文件之前这样做?
所以我想,现在我主要关心的是缓存 aws sdk,在这方面的任何帮助将不胜感激。
谢谢