Nginx 缓存浅析

Nginx 缓存问题

问题

Nginx 设置协商缓存 ,由于微信扫码、打开链接时与浏览器在地址栏输入回车表现不同,微信H5在强缓存过期前&只开启协商缓存时,会只走缓存(实际上不会发送http请求到后端,而是只走缓存)。
除非刷新,否则由于拿到过期文件导致js、css资源 404报错 或者 旧js文件而非新版代码。

阅读更多
白嫖coding,利用k3s自建CI/CD流水线并使用let's encrypt 自动获取证书(附mysql\redis k8s 配置文件)

本篇文章放在掘进上

https://juejin.cn/post/7085537552673243143


群晖搭建思源笔记

最近找笔记应用,最终在wolai(虽然是抄的)和思源笔记、obsidian中选择,先尝试下思源吧。

部署

一行命令解决,群晖面板上的会报参数错误,就是后面的 accessAuthCode 这种挂不进去 sudo docker run -d --name siyuan -u root -t -v /volume1/xxx/Drive/SiYuan/data:/docker/siyuan/data -v /volume1/xxx/Drive/SiYuan/conf:/docker/siyuan/conf -v /volume1/xxx/Drive/SiYuan/conf/conf.json:/docker/siyuan/conf/conf.json -p 6807:6806 b3log/siyuan --resident=true --workspace=/docker/siyuan/data --accessAuthCode=xxx --servePath="ds218.xxx.cn:6806" --ssl=true

阅读更多
RxJS 原理及入门demo

前置知识

  1. iterable pattern 可遍历模式的API设计,比如observer.next()
  2. observer pattern 观察者模式的API设计,比如subscribe
  3. functional programming比如内部数据处理的copy API

概念

数据从创建符创建,通过pipe管道流动,经过操作符,最后通过subscribe输出结果

阅读更多
家庭云中心 - 我家云OMV部署 Aria2 + zerotier

一直想搞家庭云存储,以前是硬盘直接挂在 AC86U 上,内网 FTP 下行大概 50M/s 的样子。
换了 AX86U(1300块) 后内网 100M/s ,但是某个朋友推荐 我家云(100块) + 红米AX6(299块) 方案,内网 80M/s-90M/s,价格也更便宜。
于是换了方案后搭建 aria2 下载器 以及外网访问 zerotier 。
家里有公网IP,但是怕被攻击,维护麻烦,所以还是走虚拟内网,安全点。

阅读更多
webp 格式在 safari 下兼容

前景提要

后端用了 webp 格式,但是想让前端解决这个问题,所以有了这篇文章
有一个叫 webpjs 的插件,原理是如果存在 webp 且浏览器不兼容,则重新请求图片,将图片的 arraybuffer 转为 base64。
但是运行一次就要从 HTML 获取所有 img 标签进行转换,如果多个组件要用会出现就会重复发送请求,所以这里改了下源码,重新封装实现
吐槽一下: safari 简直就是新时代的 IE

使用

首先下载
https://github.com/DougFlands/MyComponents/blob/master/webpjs-0.0.2.modified.js
然后注入到 index.html 里

阅读更多
electron 增量与全量更新

前景提要

公司使用 electron 构建 PC 和 MAC客户端项目,有个自动更新的需求,这里记录一下。
win 下可以实现增量和全量更新,MAC 实现全量更新。
这里全量更新有两种方式 ,一种是 electron-update 实现,一种是请求后端接口手动实现。
前者的局限在于判断是否更新由插件约定好,有一些插件约定的文件需要能够访问,如果服务器上可以提供除了安装包以外的文件访问,那就可以用这个方式。
后者是我目前的方式,由前端将打包好的增量、全量更新文件给后端,服务器上只能存更新文件,所以没法用前者的方式。
不过这两种更新方式我都实现了,可以参考下代码。

阅读更多
使用docker构建本地开发环境

v2ex做了点讨论

https://www.v2ex.com/t/661334#reply0

最近在研究 remote development 突然想到可以用docker构建本地开发环境,而且优势还挺多的。
优势:

  1. 组内成员的开发环境一致
  2. 环境为linux,解决编译时大小写问题,以及可以提供类似生产环境的体验
  3. node-sass 等需要配置的环境在 dockerfile 内定义好,甚至可能需要的 python 环境也能提供
  4. 某些没有梯子的小伙伴下载依赖比较困难,需要设置变量,这里可以提前做好
阅读更多