使用 service worker 和 Workbox 缓存页面

Service worker 是一个在后台运行的脚本,主要用于浏览器和服务器之间的网络交互,从而实现一些新功能。而 Workbox 则是 Google 基于这项功能开发的一个库,使一些常用的功能做到了开箱即用。这两天研究了一番之后用他们给博客加上了缓存功能,于是写个文记录一番。

继续阅读使用 service worker 和 Workbox 缓存页面

自动备份数据库至 Google Drive

最近的正好腾讯云硬盘故障事件闹得沸沸扬扬,提醒了大家备份的重要性。借此机会,介绍一下本站的备份方案。

本来在 WordPress 上备份数据库还是挺简单的,直接搜一搜插件就好了,但是我数据库里还有其他服务的表(并不推荐这么做。。。),因此选择了定时任务来进行这个操作

继续阅读自动备份数据库至 Google Drive

Laravel 5.6 生产环境优化

因为 Larvel 开发方便, API 简洁,一直是我的主力 Web 开发框架。但其实 Laravel 的性能也就一般般,所以在布置 Laravel 应用到生产环境时,用下面这些优化技巧(大概)可以提升性能。这里以 Laravel 5.5+ (PHP >= 7.0.0) 为例,而 PHP7 以下还是直接升级 PHP 吧,效果会好很多。

继续阅读Laravel 5.6 生产环境优化

在响应式布局中嵌入 SVG

最近遇到一个需要使用 SVG 并兼容 IE11 的场景,发现在 Chrome 下表现正常的代码在 IE 中却无法缩放,四处搜索一番最终发现了这个利用 position 和 padding 的解决方案。虽然需要根据每个SVG调整 padding 的数值,但好处是纯 CSS 实现,并且在 img 或 object 标签引用或直接内嵌 svg 代码的情况下都能使用,恰好符合我的需要。

继续阅读在响应式布局中嵌入 SVG

聊聊博客架构

搭独立博客似乎就是一个不断折腾的过程,那我就来聊聊折腾的结果,以供参考。

服务器

网站的服务器用的是 DigitalOcean 乞丐版,目前是5刀一个月,1GB 内存,25GB 硬盘。刚开始搭博客的时候,5刀一个月的plan还只有 512MB 内存,经常会出现程序因为内存不足被杀掉的惨剧。最近DigitalOcean升级了配置到 1GB,就好了很多。

继续阅读聊聊博客架构

为seewang.me启用HTTP2

想必大家都已经听说过了HTTP2的各好处,安全,性能,等等等等。。。
而在Nginx上启用HTTP2又特别简单

首先你得满足这些条件:

Nginx > 1.9.5
OpenSSL > 1.0.2

然后只要在服务器配置文件中的,把 http2 加在后面 listen 443 ssl就OK了

server {
    listen 80;
    server_name seewang.me www.seewang.me;
    return 301 https://seewang.me$request_uri;
}
server {
    listen 443 ssl http2;
    server_name seewang.me www.seewang.me;

    #rest of config...
}

要验证HTTP2,可以在Chrome开发者工具中的网络选项卡,只要在下面的标题中右键,然后选中协议,就能看到使用的协议了

Chrome Developer Tools

免费SSL证书——Let’s Encrypt

刚架这个博客的时候就顺便弄了 SSL 证书,用的 StartCom,申请之后除了一年一续,也没去多管。前几天续了证书以后发现 Chrome 仍然不认,查了一下才知道原来 StartCom 作死,已经被 Chrome 和 Firefox 拉黑了。

于是乎又是一番搜索,发现了现在用的 Let’s Encrypt。

和 StartCom 不同的是,Let’s Encrypt 提供了一个可以在服务器上运行的程序,签发证书,自动配置 HTTPS(虽然并没有成功),方便了很多。

根据官方文档,下下来跑一遍就可以了

    wget https://dl.eff.org/certbot-auto
    chmod a+x certbot-auto
    ./certbot-auto

但是并不认我Nginx的配置,于是只能先拿证书,再手动配置了。

    ./certbot-auto certonly

过程中会提示输出域名和 wwwroot 地址等信息,一步一步来就可以了。具体可以参考官网(https://letsencrypt.org/),总的来说还算是轻松愉快的。

CentOS更新软件包重复错误

这两天在用yum更新CentOS的时候,出现了软件包重复现错误。虽然已经不是第一次遇到这个问题,但距上次遇到时已经过了很久,早已忘记当时是如何解决的了,结果又花了好久才得以解决,这次吸取教训记下来,以免再忘。。。

错误信息大致如下:

继续阅读CentOS更新软件包重复错误

Linux学习笔记(十二)——vim编辑器详解

在 Linux 下最常用的文本编辑器莫过于 vim,而这篇文章就会介绍 vim 编辑器的使用方法。vi 是 Visual Interface 的缩写,而 vim (VI iMproved) 则是其增加版本。

与其他编辑器不同,vim 编辑器拥有三种模式

  • 编辑模式(命令模式)
  • 输入模式
  • 末行模式

每种模式都有其各自的用途与操作方式。

继续阅读Linux学习笔记(十二)——vim编辑器详解

Linux学习笔记(一):命令类型与常用命令

内部命令与外部命令

内部命令是 shell 程序的一部分,其中包含的是一些比较简单的 linux 系统命令,这些命令由shell程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。内部命令是写在 bash 源码里面的,其执行速度比外部命令快,因为解析内部命令 shell不需要创建子进程。比如:exit, history, cd, echo等。 外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。通常外部命令的实体并不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。shell 程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在 bash 之外额外安装的,通常放在/bin, /usr/bin, /sbin,/usr/sbin 等位置。 使用type命令可以区分内部命令

继续阅读Linux学习笔记(一):命令类型与常用命令