服务端2月18日 21:36
WordPress 自定义主题开发怎样做才不容易踩坑?WordPress 自定义主题开发不是把所有钩子都堆进 `functions.php`,而是先分清主题该管什么。主题负责展示、模板、样式和少量前端交互;自定义文章类型、支付、会员权限这类换主题后仍要保留的能力,更适合放进插件。这样做后,主题升级、改版和排错都会轻很多。
## 追问
### 主题最小目录应该包含哪些文件?
最小主题至少要有 `style.css`、`index.php` 和 `functions.php`,再按页面补 `header.php`、`footer.php`、`single.php`、`page.php`、`archive.php`、`search.php`、...服务端2月18日 21:46
什么是 PWA?它和普通 Web、原生 App 的区别在哪里?PWA,全称 Progressive Web App,直译是渐进式 Web 应用。说白了,它还是一个网站,但在浏览器支持的情况下,可以逐步获得接近原生 App 的体验:能安装到桌面或主屏幕,能离线打开部分页面,能缓存资源提升加载速度,也能在合适场景下发送通知。它不是一个新框架,而是一组 Web 能力和工程实践的组合。
## PWA 到底“渐进”在哪里
渐进式的意思是:基础体验先保证可访问,再按浏览器能力增强。用户用老浏览器访问,它仍然是普通网页;用户用现代浏览器访问,Service Worker、Manifest、Push API、Background Sync 等能力才逐步启用。这...服务端2月18日 21:46
Service Worker 生命周期怎么跑?注册、安装和激活有哪些坑?Service Worker 是浏览器放在页面和网络之间的一层后台脚本。它不属于某个页面,也不能直接操作 DOM,但可以拦截请求、管理缓存、处理推送和后台同步。PWA 里的离线访问、秒开体验、资源更新,大多都绕不开它。理解 Service Worker 的关键不是背 API,而是搞清楚它什么时候安装、什么时候激活、什么时候真正开始控制页面。
## 生命周期怎么走
页面先注册 Service Worker。注册成功不代表它马上接管当前页面,只是告诉浏览器这个作用域下有一个后台脚本。脚本下载后进入 install 阶段,通常在这里预缓存应用壳、离线页和必要静态资源。
```javasc...服务端2月18日 21:47
Web App Manifest 怎么配置?哪些属性影响 PWA 安装体验?Web App Manifest 是 PWA 的应用说明书。浏览器会读取这个 JSON 文件,决定应用能不能被安装、安装后叫什么名字、从哪个地址启动、图标长什么样、打开时像浏览器标签页还是独立应用。它本身不负责离线缓存,离线能力要靠 Service Worker;Manifest 解决的是“这个 Web 应用能不能像 App 一样出现在设备上”。
## 一个可用的 Manifest 示例
Manifest 通常放在站点根目录,并在 HTML 里引用。最小可用配置不复杂,但图标、`start_url`、`scope`、`display` 这些字段会直接影响安装体验。
```html
...服务端2月18日 21:47
PWA 缓存策略怎么选?不同资源该用哪种缓存方式?PWA 缓存策略不是把资源一股脑塞进 Cache Storage。真正要做的是按资源的变化频率、实时性要求和离线价值分开处理:静态资源优先速度,接口数据优先新鲜度,关键页面要能降级,支付、库存、权限这类请求通常不要缓存。选错策略的后果很直接,用户可能看到旧价格、旧头像,或者离线时连一页友好的提示都没有。
## 常见缓存策略怎么选
`Cache First` 适合版本号稳定的 JS、CSS、字体、Logo、插图。它先查缓存,命中就返回,没命中再请求网络。好处是快,离线也能用;边界是资源必须有版本管理,否则你发布了新包,用户还可能拿到旧文件。
```javascript
self.ad...服务端2月18日 21:48
PWA 离线功能怎么做才能避免缓存旧页面?PWA 离线功能的核心不是“断网也能打开页面”,而是让用户在弱网、断网、恢复联网之间不丢数据、不看错数据。Service Worker 拦截请求,Cache API 存静态资源,IndexedDB 存业务数据。难点在取舍:哪些内容能离线读,哪些必须实时请求,哪些失败后要明确提示。
## 追问
### 离线功能最小可用版本应该包含什么?
最小版本包括 Service Worker 注册、应用外壳预缓存、离线兜底页和网络状态提示。应用外壳指 HTML、核心 CSS、入口 JS、图标和 offline.html,不是全站所有资源。取舍上,预缓存越多首次安装越慢,也更容易导致 install...服务端2月18日 21:50
PWA 推送通知怎么实现才不容易被用户拒绝?PWA 推送通知的技术链路并不复杂:页面请求权限,PushManager 创建订阅,服务端保存 endpoint 和密钥,Service Worker 收到 push 后展示通知。真正难的是边界和时机:过早弹权限会被拒绝,订阅过期不清理会浪费推送额度,通知没价值会被系统静音。
## 追问
### 推送通知必须有哪些组件?
至少需要 Notification API、Push API、Service Worker、服务端逻辑和 VAPID 密钥。Notification API 负责展示通知,Push API 负责订阅浏览器推送通道,Service Worker 负责后台接收 push...服务端2月18日 21:52
PWA 性能优化应该先改缓存还是先改资源加载?PWA 性能优化不要一上来就把所有资源塞进缓存。更稳的做法是先看瓶颈:首屏慢,多半是 JavaScript、CSS、字体和图片阻塞;二次访问慢,再重点看 Service Worker 缓存;交互卡顿,则要拆主线程任务。PWA 的优势是“像 App 一样快”,但缓存策略写错,用户看到的可能是旧页面,甚至是旧接口数据。
## 追问
### 首屏性能应该先优化哪些资源?
首屏优先处理 HTML、关键 CSS、入口 JS、首屏图片和字体,因为它们直接影响 FCP、LCP 和 INP。取舍上,不建议把所有 CSS 都内联,内联过多会让 HTML 变胖。比较稳的边界是只内联首屏必需样式,其他样式...服务端2月18日 21:54
PWA 安全性如何保障才算到位?PWA 的安全底线比普通网页更高,因为它能被安装、能离线运行,还可能处理推送、缓存和本地数据。安全不是给页面加一个 HTTPS 就结束,而是要同时管住传输、脚本来源、Service Worker 作用域、缓存内容、身份凭证和监控告警。最重要的原则是:Service Worker 能拦截请求,所以它本身必须像后端入口一样谨慎对待;本地缓存能提升体验,也可能把过期页面、敏感接口响应和错误权限一起保存下来。
## 必做的安全配置
首先,生产环境必须全站 HTTPS,localhost 只适合开发调试。建议开启 HSTS,但第一次上线不要立刻加 `preload`,确认所有子域都支持 HTT...服务端2月18日 21:55
PWA 和原生应用怎么选才不踩坑?PWA 和原生应用没有绝对胜负,关键看你的产品最依赖什么。PWA 适合内容、电商、工具、活动页和需要快速试错的业务;原生应用适合高频使用、强交互、重性能、深度调用设备能力的业务。最容易踩坑的决策,是只看开发成本:PWA 省掉了双端开发和商店审核,但如果后期补相机、蓝牙、后台定位、复杂推送,省下的钱可能会在兼容性和体验上还回去。
## 先看能力边界,再看预算
PWA 的优势是分发轻、更新快、SEO 友好,一条 URL 就能触达用户。它可以离线缓存、添加到桌面、接收推送,并用一套 Web 技术覆盖多端。但它仍受浏览器和系统限制,尤其是 iOS 上的后台任务、推送能力、存储配额和安装引导都...