0%

Pinia 是什么?

Pinia 是 Vue 官方推荐的状态管理库,旨在替代 Vuex。它更轻量,TypeScript 支持更好。

安装

1
npm install pinia

创建 Store

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', {
state: () => ({
count: 0
}),
getters: {
doubleCount: (state) => state.count * 2
},
actions: {
increment() {
this.count++
}
}
})

在组件中使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<template>
<div>
<p>Count: {{ counter.count }}</p>
<p>Double: {{ counter.doubleCount }}</p>
<button @click="counter.increment()">+</button>
</div>
</template>

<script>
import { useCounterStore } from '@/stores/counter'

export default {
setup() {
const counter = useCounterStore()

return { counter }
}
}
</script>

异步 Actions

1
2
3
4
5
6
actions: {
async fetchUser() {
const user = await fetch('/api/user')
this.user = await user.json()
}
}

插件

1
2
3
4
5
pinia.use(({ store }) => {
store.$subscribe((mutation, state) => {
// 响应状态变化
})
})

与 Vuex 的比较

  • Pinia 更轻量
  • 更好的 TypeScript 支持
  • 组合式 API 友好
  • 自动代码分割

总结

Pinia 是 Vue 3 时代的首选状态管理。语法简洁,功能强大。迁移 Vuex 项目也很容易。

什么是服务端渲染?

服务端渲染 (SSR) 在服务器生成 HTML,提高首屏加载速度和 SEO。

Nuxt.js 简介

Nuxt.js 是基于 Vue.js 的 SSR 框架,简化 SSR 开发。

安装

1
npx create-nuxt-app my-app

项目结构

1
2
3
4
5
6
7
8
9
pages/
index.vue
about.vue
components/
Header.vue
layouts/
default.vue
store/
index.js

页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!-- pages/index.vue -->
<template>
<div>
<h1>{{ title }}</h1>
<p>Welcome to Nuxt.js!</p>
</div>
</template>

<script>
export default {
data() {
return {
title: 'Home Page'
}
},
head() {
return {
title: this.title
}
}
}
</script>

路由

Nuxt.js 自动生成路由。pages/ 下的文件对应路由。

异步数据

1
2
3
4
5
6
export default {
async asyncData({ params }) {
const { data } = await axios.get(`https://api.example.com/posts/${params.id}`)
return { post: data }
}
}

状态管理

使用 Vuex 或 Pinia。

插件

1
2
3
4
5
// plugins/vue-notifications.js
import Vue from 'vue'
import VueNotifications from 'vue-notifications'

Vue.use(VueNotifications)

部署

1
2
npm run build
npm run start

总结

Nuxt.js 让 SSR 开发变得简单。适合需要 SEO 和首屏性能的应用。官方文档很详细,多实践。

为什么需要状态管理?

在大型应用中,组件间共享状态变得复杂。Vuex 提供集中式状态管理,让状态变化可预测。

核心概念

State

存储应用状态。

1
2
3
4
5
const store = new Vuex.Store({
state: {
count: 0
}
})

Getters

计算属性,处理 state。

1
2
3
getters: {
doubleCount: state => state.count * 2
}

Mutations

同步修改 state。

1
2
3
4
5
mutations: {
increment (state) {
state.count++
}
}

Actions

异步操作,提交 mutations。

1
2
3
4
5
6
7
actions: {
incrementAsync ({ commit }) {
setTimeout(() => {
commit('increment')
}, 1000)
}
}

在组件中使用

1
2
3
4
5
6
7
8
9
10
11
12
import { mapState, mapGetters, mapMutations, mapActions } from 'vuex'

export default {
computed: {
...mapState(['count']),
...mapGetters(['doubleCount'])
},
methods: {
...mapMutations(['increment']),
...mapActions(['incrementAsync'])
}
}

模块化

1
2
3
4
5
6
7
8
9
10
11
12
const moduleA = {
state: () => ({ ... }),
mutations: { ... },
actions: { ... },
getters: { ... }
}

const store = new Vuex.Store({
modules: {
a: moduleA
}
})

严格模式

1
2
3
const store = new Vuex.Store({
strict: process.env.NODE_ENV !== 'production'
})

总结

Vuex 让状态管理清晰有序。开始时可能复杂,但对大型应用很有用。推荐配合 Vue DevTools 使用。

Vue Router 基础回顾

Vue Router 是 Vue.js 官方路由管理器。它和 Vue.js 深度集成,让构建单页应用变得简单。

动态路由匹配

路由参数

1
2
3
4
5
6
7
8
// 路由配置
{
path: '/user/:id',
component: User
}

// 组件中获取参数
this.$route.params.id

响应路由参数变化

1
2
3
4
5
watch: {
'$route' (to, from) {
// 路由变化时执行
}
}

嵌套路由

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
path: '/user/:id',
component: User,
children: [
{
path: 'profile',
component: UserProfile
},
{
path: 'posts',
component: UserPosts
}
]
}

编程式导航

1
2
3
4
5
6
7
8
// 跳转到指定路由
this.$router.push('/home')

// 替换当前路由
this.$router.replace('/home')

// 返回上一页
this.$router.go(-1)

路由守卫

全局守卫

1
2
3
4
5
6
7
router.beforeEach((to, from, next) => {
if (to.name !== 'Login' && !isAuthenticated) {
next({ name: 'Login' })
} else {
next()
}
})

路由独享守卫

1
2
3
4
5
6
7
{
path: '/admin',
component: Admin,
beforeEnter: (to, from, next) => {
// 守卫逻辑
}
}

组件内守卫

1
2
3
4
5
6
7
8
9
10
11
export default {
beforeRouteEnter (to, from, next) {
// 进入路由前
},
beforeRouteUpdate (to, from, next) {
// 路由更新时
},
beforeRouteLeave (to, from, next) {
// 离开路由时
}
}

路由懒加载

1
const User = () => import('./User.vue')

滚动行为

1
2
3
4
5
6
7
scrollBehavior (to, from, savedPosition) {
if (savedPosition) {
return savedPosition
} else {
return { x: 0, y: 0 }
}
}

总结

Vue Router 功能强大,掌握这些高级用法能让你构建更复杂的应用。多实践,多参考官方文档。

HTTPS 重要性

加密传输,防止中间人攻击。

获取证书

  • Let’s Encrypt (免费)
  • 付费证书

配置

服务器配置 SSL/TLS。

重定向

1
2
3
if (location.protocol !== 'https:') {
location.replace('https:' + location.href.substring(location.protocol.length));
}

总结

HTTPS 是现代 Web 标准。测试行3

TLS 版本与加密套件

  • 优先使用 TLS 1.2/1.3
  • 禁用 SSLv2/SSLv3/TLS 1.0
  • 配置强加密套件,如 ECDHE+AESGCM

HSTS(HTTP Strict Transport Security)

1
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

服务器配置示例

Nginx

1
2
3
4
5
6
7
server {
listen 443 ssl;
ssl_certificate /etc/ssl/certs/site.crt;
ssl_certificate_key /etc/ssl/private/site.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
}

Apache

1
2
3
4
5
6
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
SSLProtocol all -SSLv3 -TLSv1
</VirtualHost>

获取证书

  • Let’s Encrypt 利用 Certbot 自动续期
  • 使用 ACME 协议取得证书

证书链与中间证书

确保服务器提供完整证书链,避免浏览器警告。

性能优化

启用 OCSP StaplingHTTP/2

安全测试### 安全测试### 安全测试### 安全测试### �。### 安全测试### 安�Web 安### 安全测试### 安兽�加密、头部和证书管理可防止窃听和中间人攻击。

TLS 版本与加密套件

  • 优先使用 TLS 1.2/1.3
  • 禁用 SSLv2/SSLv3/TLS 1.0
  • 配置强加密套件,如 ECDHE+AESGCM

HSTS(HTTP Strict Transport Security)

1
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

服务器配置示例

Nginx

1
2
3
4
5
6
7
server {
listen 443 ssl;
ssl_certificate /etc/ssl/certs/site.crt;
ssl_certificate_key /etc/ssl/private/site.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
}

Apache

1
2
3
4
5
6
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
SSLProtocol all -SSLv3 -TLSv1
</VirtualHost>

获取证书

  • Let’s Encrypt 利用 Certbot 自动续期
  • 使用 ACME 协议取得证书

证书链与中间证书

确保服务器提供完整证书链,避免浏览器警告。

性能优化

启用 OCSP StaplingHTTP/2

安全### 安全### 安全### 安全### 安全### 安全### 安�。

总结

HTTPS 是 Web 安HTTPS 是 Web 安HTT�配置HTTPS 是 Web 安HTTPS��管理可防止窃听和中间人攻击。

HTTPS 配置补充 1
HTTPS 配置补充 2
HTTPS 配置补充 3
HTTPS 配置补充 4
HTTPS 配置补充 5
HTTPS 配置补充 6
HTTPS 配置补充 7
HTTPS 配置补充 8
HTTPS 配置补充 9
HTTPS 配置补充 10
HTTPS 配置补充 11
HTTPS 配置补充 12
HTTPS 配置补充 13
HTTPS 配置补充 14
HTTPS 配置补充 15

CSRF 是什么?

跨站请求伪造,诱导用户执行操作。

防范

  • SameSite Cookie
  • CSRF Token
1
<input type="hidden" name="csrf_token" value="token">

总结

CSRF 防范保护用户操作安全。

抵御策略

  • 同源策略已阻止大多数跨域请求
  • 仍需防止浏览器自动带 Cookie 的 POST/GET 请求

CSRF Token 实现

后端生成随机 token,保存在 session 并在表单中作为隐藏字段传递。

1
<input type="hidden" name="csrf_token" value="<%= token %>">

服务器验证提交的 token 是否匹配。

设置 Set-Cookie: key=value; SameSite=StrictLax

前端将 token 存在 cookie 并在请求头或 body 中重复提交。

框架支持

  • Django:CsrfViewMiddleware
  • Express:csurf 中间件
  • Rails:自动生成 authenticity token

检测工具

使用 OWASP ZAP 可以模拟 CSRF 攻击。

实例分析

1
2
3
4
5
fetch('/transfer', {
method: 'POST',
credentials: 'include',
body: JSON.stringify({ amount: 100 })
});

若攻击者构造页面自动请求,将触发 CSRF,除非有 token 验证。

��攻击者构造页面自动请求,将触发 CSRF,除非所有��攻凔�户输入的接口上进行防护。

CSRF 防范补充 1
CSRF 防范补充 2
CSRF 防范补充 3
CSRF 防范补充 4
CSRF 防范补充 5
CSRF 防范补充 6
CSRF 防范补充 7
CSRF 防范补充 8
CSRF 防范补充 9
CSRF 防范补充 10
CSRF 防范补充 11
CSRF 防范补充 12
CSRF 防范补充 13
CSRF 防范补充 14
CSRF 防范补充 15
CSRF 防范补充 16
CSRF 防范补充 17
CSRF 防范补充 18
CSRF 防范补充 19
CSRF 防范补充 20
CSRF 防范补充 21
CSRF 防范补充 22
CSRF 防范补充 23
CSRF 防范补充 24
CSRF 防范补充 25
CSRF 防范补充 26
CSRF 防范补充 27
CSRF 防范补充 28
CSRF 防范补充 29
CSRF 防范补充 30
CSRF 防范补充 31
CSRF 防范补充 32
CSRF 防范补充 33
CSRF 防范补充 34
CSRF 防范补充 35
CSRF 防范补充 36
CSRF 防范补充 37
CSRF 防范补充 38
CSRF 防范补充 39
CSRF 防范补充 40
CSRF 防范补充 41
CSRF 防范补充 42
CSRF 防范补充 43
CSRF 防范补充 44
CSRF 防范补充 45
CSRF 防范补充 46
CSRF 防范补充 47
CSRF 防范补充 48
CSRF 防范补充 49
CSRF 防范补充 50
CSRF 防范补充 51
CSRF 防范补充 52
CSRF 防范补充 53
CSRF 防范补充 54
CSRF 防范补充 55
CSRF 防范补充 56
CSRF 防范补充 57
CSRF 防范补充 58
CSRF 防范补充 59
CSRF 防范补充 60
CSRF 防范补充 61
CSRF 防范补充 62
CSRF 防范补充 63
CSRF 防范补充 64
CSRF 防范补充 65
CSRF 防范补充 66
CSRF 防范补充 67
CSRF 防范补充 68
CSRF 防范补充 69
CSRF 防范补充 70
CSRF 防范补充 71
CSRF 防范补充 72
CSRF 防范补充 73
CSRF 防范补充 74
CSRF 防范补充 75
CSRF 防范补充 76
CSRF 防范补充 77
CSRF 防范补充 78
CSRF 防范补充 79
CSRF 防范补充 80
CSRF 防范补充 81
CSRF 防范补充 82
CSRF 防范补充 83
CSRF 防范补充 84
CSRF 防范补充 85
CSRF 防范补充 86
CSRF 防范补充 87
CSRF 防范补充 88
CSRF 防范补充 89
CSRF 防范补充 90

XSS 是什么?

跨站脚本攻击,注入恶意脚本。

类型

  • 存储型
  • 反射型
  • DOM 型

防范

  • 输入验证
  • 输出转义
  • CSP
1
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">

总结

XSS 防范保护用户数据。

输出编码

  • HTML 实体编码 < -> &lt;> -> &gt;
  • CSS 编码、URL 编码

内容安全策略 (CSP)

在响应头中添加:

1
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-abc123';

对内联脚本使用 nonce 或 hash。

框架防 XSS

  • React 自动对 JSX 进行编码
  • Angular 使用 {{ }} 绑定会转义
  • Vue 模板自动转义,v-html 小心使用

测试与扫描

使用 OWASP ZAP、Burp Suite、nmap 等工具扫描跨站脚本漏洞。

相关攻击示例

1
<img src=x onerror=alert(1)>
1
2
const user = '<script>alert(1)</script>';
document.body.innerHTML = user; // 易受攻击

防范总结

  1. 永远对外部数据编码或转义
  2. 使用 CSP 限制资源加载
  3. 定期扫描和审计

XSS 防范补充 1
XSS 防范补充 2
XSS 防范补充 3
XSS 防范补充 4
XSS 防范补充 5
XSS 防范补充 6
XSS 防范补充 7
XSS 防范补充 8
XSS 防范补充 9
XSS 防范补充 10
XSS 防范补充 11
XSS 防范补充 12
XSS 防范补充 13
XSS 防范补充 14
XSS 防范补充 15
XSS 防范补充 16
XSS 防范补充 17
XSS 防范补充 18
XSS 防范补充 19
XSS 防范补充 20
XSS 防范补充 21
XSS 防范补充 22
XSS 防范补充 23
XSS 防范补充 24
XSS 防范补充 25
XSS 防范补充 26
XSS 防范补充 27
XSS 防范补充 28
XSS 防范补充 29
XSS 防范补充 30
XSS 防范补充 31
XSS 防范补充 32
XSS 防范补充 33
XSS 防范补充 34
XSS 防范补充 35
XSS 防范补充 36
XSS 防范补充 37
XSS 防范补充 38
XSS 防范补充 39
XSS 防范补充 40
XSS 防范补充 41
XSS 防范补充 42
XSS 防范补充 43
XSS 防范补充 44
XSS 防范补充 45
XSS 防范补充 46
XSS 防范补充 47
XSS 防范补充 48
XSS 防范补充 49
XSS 防范补充 50
XSS 防范补充 51
XSS 防范补充 52
XSS 防范补充 53
XSS 防范补充 54
XSS 防范补充 55
XSS 防范补充 56
XSS 防范补充 57
XSS 防范补充 58
XSS 防范补充 59
XSS 防范补充 60
XSS 防范补充 61
XSS 防范补充 62
XSS 防范补充 63
XSS 防范补充 64
XSS 防范补充 65
XSS 防范补充 66
XSS 防范补充 67
XSS 防范补充 68
XSS 防范补充 69
XSS 防范补充 70
XSS 防范补充 71
XSS 防范补充 72
XSS 防范补充 73
XSS 防范补充 74
XSS 防范补充 75
XSS 防范补充 76
XSS 防范补充 77
XSS 防范补充 78
XSS 防范补充 79
XSS 防范补充 80
XSS 防范补充 81
XSS 防范补充 82
XSS 防范补充 83
XSS 防范补充 84
XSS 防范补充 85

PWA 特性

  • 响应式
  • 离线可用
  • 安装到桌面
  • 推送通知

核心文件

  • Web App Manifest
  • Service Worker

Manifest

1
2
3
4
5
6
7
{
"name": "My App",
"short_name": "App",
"start_url": "/",
"display": "standalone",
"icons": [...]
}

总结

PWA 桥接 Web 和原生应用。

Web App Manifest 详解

1
2
3
4
5
6
7
8
9
10
11
{
"name": "My PWA App",
"short_name": "PWA",
"start_url": "/index.html",
"display": "standalone",
"background_color": "#ffffff",
"icons": [
{"src": "icon-192.png", "sizes": "192x192", "type": "image/png"},
{"src": "icon-512.png", "sizes": "512x512", "type": "image/png"}
]
}

添加安装提示

监听 beforeinstallprompt 事件,提供自定义安装按钮。

推送通知

  • 使用 Push APINotifications API
  • 在 Service Worker 中处理 push 事件

离线体验

结合 Service Worker 缓存静态资源和 API 请求,提供可用的离线页面。

SEO 与可访问性

确保在离线或不支持 PWA 的环境下有降级方案,manifest 文件放在根目录。

移动端优化

  • 触摸反馈
  • 响应式布局
  • 长按图标快速访问 (iOS)

性能与审核

使用 Lighthouse 的 PWA 审核项(如 README、离线、HTTPS)进行�使用 Lighthouse 的 PWA 审核项(如 README、离线、HTTPS�结使用 Lighthouse ��提升到使甑原生应用的体验,需�使用 Lighthous�、安使用 Lighthouse 的 P�方面。

PWA补充行 1
PWA补充行 2
PWA补充行 3
PWA补充行 4
PWA补充行 5
PWA补充行 6
PWA补充行 7
PWA补充行 8
PWA补充行 9
PWA补充行 10
PWA补充行 11
PWA补充行 12
PWA补充行 13
PWA补充行 14
PWA补充行 15
PWA补充行 16
PWA补充行 17
PWA补充行 18
PWA补充行 19
PWA补充行 20
PWA补充行 21
PWA补充行 22
PWA补充行 23
PWA补充行 24
PWA补充行 25
PWA补充行 26
PWA补充行 27
PWA补充行 28
PWA补充行 29
PWA补充行 30
PWA补充行 31
PWA补充行 32
PWA补充行 33
PWA补充行 34
PWA补充行 35
PWA补充行 36
PWA补充行 37
PWA补充行 38
PWA补充行 39
PWA补充行 40
PWA补充行 41
PWA补充行 42
PWA补充行 43
PWA补充行 44
PWA补充行 45
PWA补充行 46
PWA补充行 47
PWA补充行 48
PWA补充行 49
PWA补充行 50
PWA补充行 51
PWA补充行 52
PWA补充行 53
PWA补充行 54
PWA补充行 55
PWA补充行 56
PWA补充行 57
PWA补充行 58
PWA补充行 59
PWA补充行 60
PWA补充行 61
PWA补充行 62
PWA补充行 63
PWA补充行 64
PWA补充行 65
PWA补充行 66
PWA补充行 67
PWA补充行 68
PWA补充行 69
PWA补充行 70
PWA补充行 71
PWA补充行 72
PWA补充行 73
PWA补充行 74
PWA补充行 75
PWA补充行 76
PWA补充行 77
PWA补充行 78
PWA补充行 79
PWA补充行 80
PWA补充行 81
PWA补充行 82
PWA补充行 83
PWA补充行 84
PWA补充行 85

Service Worker 是什么?

后台运行脚本,实现离线功能。

注册

1
2
3
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js');
}

生命周期

  • Install
  • Activate
  • Fetch

缓存策略

1
2
3
4
5
6
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request)
.then(response => response || fetch(event.request))
);
});

总结

Service Worker 让应用离线可用。

缓存策略比较

  • Cache First
  • Network First
  • Cache Only
  • Network Only
  • Stale-while-revalidate
1
2
3
4
5
6
7
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request).then(response => {
return response || fetch(event.request);
})
);
});

使用 Workbox

Workbox 提供简洁 API:

1
2
3
4
5
6
7
import { registerRoute } from 'workbox-routing';
import { StaleWhileRevalidate } from 'workbox-strategies';

registerRoute(
({request}) => request.destination === 'image',
new StaleWhileRevalidate()
);

更新与版本管理

  • 修改 sw.js 文件时,浏览器会重新安装 Service Worker。
  • 使用 skipWaiting()clients.claim() 立即激活。

离线测试

  • DevTools → Application → Service Workers → Offline 模式
  • 使用 workbox-cli 生成模版

限制与注意事项

  • Service Worker 仅在 HTTPS 或 localhost 下可用
  • 不能直�- 不能直�- 不能直�- 不能直�- 不能直�- 不能直�- 不### �- 不能直�- 不胿阅�- 不能直�WA- 不能直�缓存

总结

Service WorService WorServ�线缓存�Servi送通知的核心,但需要谨慎设计缓存策略,以及正确管理版本和更新流程。

离线缓存补充行 1
离线缓存补充行 2
离线缓存补充行 3
离线缓存补充行 4
离线缓存补充行 5
离线缓存补充行 6
离线缓存补充行 7
离线缓存补充行 8
离线缓存补充行 9
离线缓存补充行 10
离线缓存补充行 11
离线缓存补充行 12
离线缓存补充行 13
离线缓存补充行 14
离线缓存补充行 15
离线缓存补充行 16
离线缓存补充行 17
离线缓存补充行 18
离线缓存补充行 19
离线缓存补充行 20
离线缓存补充行 21
离线缓存补充行 22
离线缓存补充行 23
离线缓存补充行 24
离线缓存补充行 25
离线缓存补充行 26
离线缓存补充行 27
离线缓存补充行 28
离线缓存补充行 29
离线缓存补充行 30
离线缓存补充行 31
离线缓存补充行 32
离线缓存补充行 33
离线缓存补充行 34
离线缓存补充行 35
离线缓存补充行 36
离线缓存补充行 37
离线缓存补充行 38
离线缓存补充行 39
离线缓存补充行 40
离线缓存补充行 41
离线缓存补充行 42
离线缓存补充行 43
离线缓存补充行 44
离线缓存补充行 45
离线缓存补充行 46
离线缓存补充行 47
离线缓存补充行 48
离线缓存补充行 49
离线缓存补充行 50
离线缓存补充行 51
离线缓存补充行 52
离线缓存补充行 53
离线缓存补充行 54
离线缓存补充行 55
离线缓存补充行 56
离线缓存补充行 57
离线缓存补充行 58
离线缓存补充行 59
离线缓存补充行 60
离线缓存补充行 61
离线缓存补充行 62
离线缓存补充行 63
离线缓存补充行 64
离线缓存补充行 65
离线缓存补充行 66
离线缓存补充行 67
离线缓存补充行 68
离线缓存补充行 69
离线缓存补充行 70

CDN 是什么?

内容分发网络,加速资源加载。

工作原理

用户请求最近的服务器节点。

常用 CDN

  • Cloudflare
  • Akamai
  • jsDelivr

配置

1
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.js"></script>

自定义 CDN

上传资源到 CDN 提供商。

总结

CDN 减少延迟,提升全球用户体验。

CDN 缓存控制

  • 使用 Cache-Control 头设置缓存策略
  • 设置 ETagLast-Modified 进行协商缓存
  • 区分静态资源与动态接口
1
Cache-Control: public, max-age=31536000, immutable

CDN 配置示例

Cloudflare

  • 页面规则定制缓存
  • Workers 做边缘逻辑

AWS CloudFront

  • 配置源站、行为、TTL、压缩
  • 使用 Lambda@Edge 处理请求

缓存失效策略

  • 时间戳/哈希命名(cache busting)
  • 手动清除或发送 PURGE 请求

地理分布

了解节点分布,选择离用户近的提供商。多活场景下可用多 CDN 冗余。

安全特性

  • 设置 HTTPS
  • 使用 WAF 过滤恶意请求

性能监控

  • 使用报告查看 HIT/MISS 率
  • 监控带宽和延迟

附加功能

  • 图片/视频优化
  • 自动压缩和 minify
  • 热点内容分发

总结

合理使用 CDN 能显著降低源站负载、提高用户访问速度,并支持高并发场景。

CDN补充行 1
CDN补充行 2
CDN补充行 3
CDN补充行 4
CDN补充行 5
CDN补充行 6
CDN补充行 7
CDN补充行 8
CDN补充行 9
CDN补充行 10
CDN补充行 11
CDN补充行 12
CDN补充行 13
CDN补充行 14
CDN补充行 15
CDN补充行 16
CDN补充行 17
CDN补充行 18
CDN补充行 19
CDN补充行 20
CDN补充行 21
CDN补充行 22
CDN补充行 23
CDN补充行 24
CDN补充行 25
CDN补充行 26
CDN补充行 27
CDN补充行 28
CDN补充行 29
CDN补充行 30
CDN补充行 31
CDN补充行 32
CDN补充行 33
CDN补充行 34
CDN补充行 35
CDN补充行 36
CDN补充行 37
CDN补充行 38
CDN补充行 39
CDN补充行 40
CDN补充行 41
CDN补充行 42
CDN补充行 43
CDN补充行 44
CDN补充行 45
CDN补充行 46
CDN补充行 47
CDN补充行 48
CDN补充行 49
CDN补充行 50
CDN补充行 51
CDN补充行 52
CDN补充行 53
CDN补充行 54
CDN补充行 55
CDN补充行 56
CDN补充行 57
CDN补充行 58
CDN补充行 59
CDN补充行 60
CDN补充行 61
CDN补充行 62
CDN补充行 63
CDN补充行 64
CDN补充行 65
CDN补充行 66
CDN补充行 67
CDN补充行 68
CDN补充行 69
CDN补充行 70