vue-cli 在 apache 服务下配置 gzip 压缩

修改webpack配置文件

config/index.js文件中配置productionGzip: true

添加apache配置

<IfModule mod_headers.c>
 # 服务器上 gzip 压缩的 css 文件是否存在
 # 检查客户端是否接受 gzip
 RewriteCond "%{HTTP:Accept-encoding}" "gzip"
 RewriteCond "%{REQUEST_FILENAME}\.gz" -s
 RewriteRule "^(.*)\.css" "$1\.css\.gz" [QSA]
 # 服务器上 gzip 压缩的 js 文件是否存在
 # 检查客户端是否接受 gzip
 RewriteCond "%{HTTP:Accept-encoding}" "gzip"
 RewriteCond "%{REQUEST_FILENAME}\.gz" -s
 RewriteRule "^(.*)\.js" "$1\.js\.gz" [QSA]
 # Serve correct content types, and prevent mod_deflate double gzip.
 RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1]
 RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1]
 <FilesMatch "(\.js\.gz|\.css\.gz)$">
 # 提供正确的编码类型
 Header append Content-Encoding gzip
 # Force proxies to cache gzipped &
 # non-gzipped css/js files separately.
 Header append Vary Accept-Encoding
 </FilesMatch>
</IfModule>

配置可以直接写在.htaccess文件中
apache 配置参考自 http://httpd.apache.org/docs/2.4/mod/mod_deflate.html

如何判断是否生效?

查看浏览器响应头是否包含Content-Encoding: gzip

git 记住用户名密码

公司的项目众多,每次上服务器拉取代码要输一次用户名密码颇为麻烦,那么更方便的就是让git记住你的登录凭据。

设置git全局用户名邮箱

git config --global user.name [username]
git config --global user.email [email]

记住登录凭据

cd 项目目录
echo "[credential]" >> .git/config
echo " helper = store" >> .git/config

可以使用git config --list查看已设置的配置信息

MAC 安装 Xcode CommandLineTools 命令行工具包

博主看到xcode太占位置,就卸载了,结果发现git报错了,发现需要安装xcode支持。

-> git
 xcrun: error: active developer path
 ("/Applications/Xcode.app/Contents/Developer")
 does not exist, use `xcode-select --switch path/to/Xcode.app`
 to specify the Xcode that you wish to use for command line
 developer tools (or see `man xcode-select`)

解决办法

# 单独安装CommandLineTools,不需要Xcode
xcode-select --install
# 指定CommandLineTools路径
sudo xcode-select --switch /Library/Developer/CommandLineTools

MAC 常用命令以及简单使用方式

figlet 图形字符生成

$ figlet 'string'

tree 以树状图列出目录的内容

# 只显示目录
$ tree -d
# 只显示第一层目录
$ tree -L 1

wget 下载文件

nvm 管理多个Node.js版本

# 显示已安装版本
$ nvm ls
# 安装对应版本的node
$ nvm install v0.0.0
# 应用版本到命令
nvm use v0.0.0

ssh-copy-id 将公钥添加到远程机器的authorized_keys文件

# 添加远程主机key到本机
$ ssh-copy-id user@123.123.123.123

laravel 5.1 安装跨域插件,开启跨域API

composer https://packagist.org/packages/barryvdh/laravel-cors
请根据composer文档安装适合laravel版本的插件

laravel 5.1 版本安装

$ composer require barryvdh/laravel-cors 0.9.2

添加到config/app.php$providers数组

Barryvdh\Cors\ServiceProvider::class,

全局使用

开启全部路由的跨域,把 HandleCors类 添加 app/Http/Kernel.php 的 $middleware 属性中

protected $middleware = [
 // ...
 \Barryvdh\Cors\HandleCors::class,
];

组中间件

如果您想要在特定的中间件组或路由上允许CORS,请将HandleCors中间件添加到您的组中:

protected $middlewareGroups = [
 'web' => [
 // ...
 ],
 'api' => [
 // ...
 \Barryvdh\Cors\HandleCors::class,
 ],
];

添加配置文件

$ php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"

注:当使用自定义header头,如:X-Auth-Token或者X-Requested-With,你必须设置allowedHeaders包含这些头。您也可以将其设置array('*')为允许所有自定义header
注意:如果您明确列入白名单,则必须包含Origin或请求将无法识别为CORS。

return [
 /*
 |--------------------------------------------------------------------------
 | Laravel CORS
 |--------------------------------------------------------------------------
 |
 | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
 | to accept any value.
 |
 */
 'supportsCredentials' => false,
 'allowedOrigins' => ['*'],
 'allowedHeaders' => ['Content-Type', 'X-Requested-With'],
 'allowedMethods' => ['*'], // ex: ['GET', 'POST', 'PUT', 'DELETE']
 'exposedHeaders' => [],
 'maxAge' => 0,
]

也可以引用env文件配置

return [
    /*
     |--------------------------------------------------------------------------
     | Laravel CORS
     |--------------------------------------------------------------------------
     |
     | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
     | to accept any value.
     |
     */
    'supportsCredentials' => false,
    'allowedOrigins' => explode(',', env('HTTP_ORIGIN', '*')),
    'allowedHeaders' => explode(',', env('HTTP_HEADERS', 'Origin,Content-Type,Cookie,Accept,SJ-Auth-Token')),
    'allowedMethods' => explode(',', env('HTTP_METHODS', '*')),
    'exposedHeaders' => [],
    'maxAge' => 0,
];