完美解决网站卡顿,让你的网站犹如老奶奶返老还童一样快

知识讲解

完美解决网站卡顿,让你的网站犹如老奶奶返老还童一样快

2024-05-05 23:58


                                            




你的店铺是否如同老奶奶一样访问速度慢,后台卡的要死,总感觉自己网速差,下面这篇文章将会让你的店铺前后台访问速度提升1000%,就像老奶奶返老还童一样!

写给建站新手的

当然如果你是完全不懂建站和优化的纯小白,也不愿意学习,你可以无视下面的优化教程,他并不会影响你的店铺使用,他仅仅是为了让你更快仅此而已。

店铺卡顿原因

1.session产生的文件锁

为了明白这点,我们首先要知道web server不是通过一个单线程运行你的php代码,他是多个工作线程同时运行,然后处理请求。 一般,浏览网页的用户请求是被序列化的,这也是为什么http长连接起到的作用。通过保持給请求页面的所有资源连接的打开,可以避免连接的开销。 浏览器非常聪明,并且总是试图对HTML页面的请求进行序列化。对于页面上的资产(图像、脚本等),还有另一种策略。 浏览器会从它所看到的HTML中所引用的每个唯一的主机名中并行下载多个资源。 它可以通过打开多个TCP连接或管道来实现这一点。 当一个浏览器任务它正在下载资源,它可能并行的下载这些资源给一个单一的浏览用户。 会话锁定避免这种并发性(通过阻塞)在这种情况下提供对会话数据的可靠访问。

2.session锁如何工作

这个非常简单:当你使用session_start(),php就是阻塞(等待)直到上一个请求的脚本通过session_write_close()进行释放。在Linux主机上,它是依靠flock()方法实现。这是一个警告锁机制,直到这个阻塞被释放。 注意:这部分上锁的时间不会计算在php中的max_execution_time配置项,max_execution_time详见set_time_limit()

3.为什么session锁是必须的

session锁防止在用以存储session数据的共享内存出现竞争条件。每一个PHP进程都会读取整个session的储存,并写回数据在它关闭之前。 这意味要可靠地储存一个登录进来的用户信息(通常在会话数据session中完成),你必须确保没有其他进程已经读取这个session数据,不然将在写入后覆盖掉你保存的数据(因为最后一次写入数据为准)

解决卡顿的幻觉,让店铺提速1000%

1.安装Redis

  • 宝塔用户安装方法:打开软件商店,搜索redis然后进行安装,其他面板或没有使用面板的用户请自行在网络寻找安装教程。

2.为php8安装redis扩展

  • 宝塔用户安装方法:打开php8管理界面,找到安装扩展选项,选择安装redis扩展,其他面板或没有使用面板的用户请自行在网络寻找安装教程。

3.修改php8的配置文件

  • 宝塔用户修改方法:打开php8管理界面,找到Session配置,将存储模式改为redis,然后保存即可。
  • 无宝塔面板的修改方法:打开php8的配置文件php.ini,修改下面的配置:
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
;如果你设置了redis密码,则用下面整个配置
;session.save_path = "tcp://127.0.0.1:6379?auth=你的redis密码"

4.重启php8,然后访问你的店铺,你会感到非常惊讶,你的店铺真的提速1000%了!