首页 个人随笔正文

记一次博客优化的过程

薄洪涛 个人随笔 2019-08-23 125 1 php优化
近期博客访问越来越慢,有时候网络不好的时候打开一个页面需要5秒以上,所以我决定对博客来一次彻底的优化;然后本文记录了优化的过程及步骤
1. 优化了代码结构

    每个页面的独有js放页面的最后,让页面加载的时候最后加载js    

    删除zblog中的冗余代码及不用的模块

    更新了页面的样式(这个就算UI优化了)

    删除了某些插件

2. 静态资源的优化

    压缩js,css代码(此操作对静态资源的加载耗时提升很大)

    比如jquery引入国内新浪的资源镜像(之前引入的是本地的,但是服务器在国外所以国内访问巨慢)
https://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.j

    对于其他的静态资源,我们可以放在七牛上,速度也会快很多

    写了个python脚本压缩了所有文章的已上传的图片,这里吐槽下zblog,上传图片都不压缩,直接放原图,有时候一张图片500多k,需要加载超过1秒的时间,所以我们需要压缩图片,压缩脚本如下 github
import tinify
import os
# https://tinypng.com/dashboard/api key从这里获取,每月500次调用次数
tinify.key = 'you key '
fileArray = []
# 递归深度遍历文件
def traverse(f):
    fs = os.listdir(f)
    for f1 in fs:
        tmp_path = os.path.join(f, f1)
        if not os.path.isdir(tmp_path):
            if is_img(tmp_path):
                fileArray.append(tmp_path)
        else:
            traverse(tmp_path)

# 根据路径判断文件是不是img
def is_img(path):
    path = path.split('.')[-1].upper()
    return True if (path == 'PNG') | (path == 'JPG') | (path=='JPEG') else False

traverse('你想压缩的根目录')
for imgpath in fileArray:
    print("compressing ..." + imgpath)
    tinify.from_file(imgpath).to_file(imgpath)

    这里我们使用了tinypng这个网站提供的api进行压缩的,效果很不错

    做到这里的时候,博客的速度已经提高了很多,页面完全加载时间在3秒左右

3. 系统环境的优化

    升级了php版本,从php7.1升级到7.3

    开启了opcache,配置如下,此配置对php7性能提升明显,php.ini配置如下
[opcache]
; 启动操作码缓存
opcache.enable=1
; 针对支持CLI版本PHP启动操作码缓存 一般被用来测试和调试
opcache.enable_cli=1
; 共享内存大小,单位为MB
opcache.memory_consumption=128
; 存储临时字符串缓存大小,单位为MB,PHP5.3.0以前会忽略此项配置
opcache.interned_strings_buffer=8
; 缓存文件数最大限制,命中率不到100%,可以试着提高这个值
opcache.max_accelerated_files=4000
; 一定时间内检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 单位为秒
opcache.revalidate_freq=60
; 开启快速停止续发事件,依赖于Zend引擎的内存管理模块,一次释放全部请求变量的内存,而不是依次释放内存块
opcache.fast_shutdown=1
;启用检查 PHP 脚本存在性和可读性的功能,无论文件是否已经被缓存,都会检查操作码缓存,可以提升性能。 但是如果禁用了 opcache.validate_timestamps选项, 可能存在返回过时数据的风险。
opcache.enable_file_override=1
; 拓展库so文件关联加载
/www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/opcache.so/www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/opcache.so

    开启了Opcache file cache,php.ini配置文件如下(保证/tmp文件存在且有权限写入)

    通过开启这个, 我们可以让Opcache把opcode缓存缓存到外部文件中, 对于一些脚本, 会有很明显的性能提升
opcache.file_cache=/tmp

    其实这里的瓶颈主要在网络上,因为我的服务器在美国,所以在中国访问肯定会慢一些,我们只能去减少整个页面的资源大小来实现优化,相应的数据库优化等就不再进行,因为即使优化了提升也不会太明显

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论

精彩评论