这篇文章主要是针对站长来说的,如果恰好你也是一名站长,并且网站打开的速度比较慢,那么可以参考这篇文章来解决难题。

如果你的网站使用的服务器不是很差劲的情况下,一般情况下网站打开速度都在合理接受范围,最起码不会让人觉得等待很长时间,差不多在三秒之内都可以打开。
如果超过三秒的话,那么这个时候你就要需要排除问题了。毕竟超过三秒以上,对搜索引擎来说并不友好~
排除网站本身以外的其他因素之后,网站依然打开缓慢,那么可以试试下面这2种方案:
一:推荐安装php扩展:opcache,该扩展主要是为了加速和缓存php脚本,开启后你的网站运行速度会以肉眼可见的进行大幅度提升。宝塔用户可以在php-8.0管理中找到安装扩展选项进行安装。
二:终极方案,虽然是一套卡网程序的解决方案,但同样适用其他网站程序,具体需自测!
写给建站新手的,当然如果你是完全不懂建站和优化的纯小白,也不愿意学习,你可以无视下面的优化教程,他并不会影响你的程序使用,他仅仅是为了让你更快仅此而已。
程序卡顿原因
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%了!
遗憾
遗憾的是,无法为虚拟主机用户提供加速,开发这套程序最初没有使用redis来作为会话的存储系统,也是为了兼容让主机用户使用。
原创文章,作者:幸运周,如若转载,请注明出处:https://www.52thing.com/20941.html