大型网站性能优化全面总结(意见保藏)
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/ab55333d2c854e93b1d695b6846ed883~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1722603254&x-signature=YlpLr8TrftNgezNAHIrZ6t%2BOklQ%3D" style="width: 50%; margin-bottom: 20px;"></div>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">把握</span>性能优化的<span style="color: black;">关联</span>知识,特备<span style="color: black;">针对</span>大型网站大流量的应用至关重要,今天<span style="color: black;">重点</span>分享大型网站性能优化内容@mikechen</p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">应用服务器性能优化</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">应用服务器<span style="color: black;">便是</span>处理网站业务的服务器,网站的业务代码都<span style="color: black;">安排</span>在<span style="color: black;">这儿</span>,是网站<span style="color: black;">研发</span>最<span style="color: black;">繁杂</span>,变化最多的<span style="color: black;">地区</span>,优化手段<span style="color: black;">重点</span>有缓存、集群和异步等。</span></p>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/6944ac609b5c42178a97874051d060ac~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1722603254&x-signature=PF58spPTl4WNla6PV59ZhjphSCc%3D" style="width: 50%; margin-bottom: 20px;"></div>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">网站性能优化第<span style="color: black;">必定</span>律:优先<span style="color: black;">思虑</span><span style="color: black;">运用</span>缓存优化性能。</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">缓存的本质是一个内存Hash表,网站应用中,数据缓存以一对Key,Value的形式存储在内存Hash表中。缓存<span style="color: black;">重点</span>用来存放<span style="color: black;">哪些</span>读写比很高、很少变化的数据。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">二八定律:80%的<span style="color: black;">拜访</span>落在20%的数据上</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">运用</span>缓存需要<span style="color: black;">重视</span>的问题:</span></p><span style="color: black;"><strong style="color: blue;">把频繁修改的数据放入缓存。</strong>容易<span style="color: black;">显现</span>数据写入缓存后,应用还来不及读取缓存,数据就<span style="color: black;">已然</span>失效的情形,徒增系统<span style="color: black;">包袱</span>。<span style="color: black;">通常</span><span style="color: black;">来讲</span>,数据的读写比在2:1以上,缓存才有<span style="color: black;">道理</span>。</span><span style="color: black;"><strong style="color: blue;"><span style="color: black;">无</span>热点的<span style="color: black;">拜访</span>。</strong> 缓存<span style="color: black;">运用</span>的内存资源非常宝贵,只能将最新<span style="color: black;">拜访</span>的数据缓存起来,而把历史数据清理出缓存。即缓存资源应该留给20%的热点数据。</span><span style="color: black;"><strong style="color: blue;">数据不一致与脏读。</strong><span style="color: black;">通常</span>会对缓存设置失效时间,超过失效时间,就要从数据库重新加载。<span style="color: black;">因此呢</span>应用要忍受一<span style="color: black;">按时</span>间的数据不一致。另一种策略是数据更新时立即更新缓存,<span style="color: black;">不外</span>这<span style="color: black;">亦</span>会带来<span style="color: black;">更加多</span>的系统开销和事务一致性的问题。</span><span style="color: black;"><strong style="color: blue;">缓存可用性。</strong>业务发展到<span style="color: black;">必定</span><span style="color: black;">周期</span>时,缓存会承担大部分数据<span style="color: black;">拜访</span>的压力,数据库<span style="color: black;">已然</span>习惯了有缓存的日子,<span style="color: black;">因此</span>当缓存服务器崩溃时,数据库会<span style="color: black;">由于</span>完全<span style="color: black;">不可</span>承受如此大的压力而宕机,<span style="color: black;">从而</span><span style="color: black;">引起</span><span style="color: black;">全部</span>网站不可用。这种<span style="color: black;">状况</span>被<span style="color: black;">叫作</span>作缓存雪崩,<span style="color: black;">出现</span>这种故障,<span style="color: black;">乃至</span><span style="color: black;">不可</span>简单地重启缓存服务器和数据库服务器来恢复网站<span style="color: black;">拜访</span>。<span style="color: black;">处理</span>方式:1、<strong style="color: blue;">缓存热备</strong>(当某台服务器宕机时,将缓存<span style="color: black;">拜访</span>切换到热备服务器上。);2、<strong style="color: blue;">缓存服务器集群</strong>。</span><span style="color: black;"><strong style="color: blue;">缓存预热。</strong>缓存中存放的是热点数据,热点数据是缓存系统用LRU对<span style="color: black;">持续</span><span style="color: black;">拜访</span>的数据筛选出来的,这个过程需要较长的时间。新<span style="color: black;">起步</span>的缓存系统<span style="color: black;">无</span>任何数据,此时系统的性能和数据库负载都不太好。<span style="color: black;">因此呢</span><span style="color: black;">能够</span><span style="color: black;">选取</span>在<span style="color: black;">起步</span>缓存是就把热点数据预加载好。</span><span style="color: black;"><strong style="color: blue;">缓存穿透。</strong><span style="color: black;">由于</span>不恰当的业务或恶意攻击,<span style="color: black;">连续</span>高并发地<span style="color: black;">拜访</span>某一个不存在的数据,<span style="color: black;">倘若</span>缓存不<span style="color: black;">保留</span>该数据,就会有<span style="color: black;">海量</span>的请求压力落在数据库上。简单的<span style="color: black;">处理</span>方式是把请求的不存在的数据<span style="color: black;">亦</span>放进缓存,其value是null。</span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">对应<span style="color: black;">能够</span><span style="color: black;">思虑</span>的分布式缓存有memcached、redis,降低对数据库的读操作。</strong></span></p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">数据库SQL性能优化</h1>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/07b0ed45696c446d887b2f15180c0a56~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1722603254&x-signature=xrAFl4UWXOELnHjSuj3wWEsufRY%3D" style="width: 50%; margin-bottom: 20px;"></div>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">最后<span style="color: black;">便是</span><span style="color: black;">思虑</span>数据库端的性能优化,<span style="color: black;">倘若</span><span style="color: black;">拜访</span>量巨大,除了sql优化外,<strong style="color: blue;">还会<span style="color: black;">触及</span>到分库分表、读写分离、利用数据库中间件来<span style="color: black;">处理</span>(下面架构师系列有讲),<span style="color: black;">这儿</span>就<span style="color: black;">再也不</span>重复。</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">1.对<span style="color: black;">查找</span>进行优化,要<span style="color: black;">尽可能</span>避免全表扫描,<span style="color: black;">首要</span>应<span style="color: black;">思虑</span>在 where 及 order by <span style="color: black;">触及</span>的列上<span style="color: black;">创立</span>索引。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">2.应<span style="color: black;">尽可能</span>避免在 where 子句中对字段进行 null 值判断,否则将<span style="color: black;">引起</span>引擎放弃<span style="color: black;">运用</span>索引而进行全表扫描,如:</span></p><span style="color: black;">select</span> <span style="color: black;">id</span> <span style="color: black;">from</span> t <span style="color: black;">where</span> <span style="color: black;">num</span> <span style="color: black;">is</span> <span style="color: black;">null</span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">3.应<span style="color: black;">尽可能</span>避免在 where 子句中<span style="color: black;">运用</span> != 或 <> 操作符,否则将引擎放弃<span style="color: black;">运用</span>索引而进行全表扫描。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">4.应<span style="color: black;">尽可能</span>避免在 where 子句中<span style="color: black;">运用</span> or 来连接<span style="color: black;">要求</span>,<span style="color: black;">倘若</span>一个字段有索引,一个字段<span style="color: black;">无</span>索引,将<span style="color: black;">引起</span>引擎放弃<span style="color: black;">运用</span>索引而进行全表扫描。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">5.in和 not in <span style="color: black;">亦</span>要慎用,否则会<span style="color: black;">引起</span>全表扫描,如:</span></p><span style="color: black;">select</span> <span style="color: black;">id</span> <span style="color: black;">from</span> t <span style="color: black;">where</span> <span style="color: black;">num</span> <span style="color: black;">in</span>(<span style="color: black;">1</span>,<span style="color: black;">2</span>,<span style="color: black;">3</span>)
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">针对</span>连续的数值,能用 between就不要用 in 了:</span></p><span style="color: black;">select</span> <span style="color: black;">id</span> <span style="color: black;">from</span> t <span style="color: black;">where</span> <span style="color: black;">num</span> <span style="color: black;">between</span> <span style="color: black;">1</span> <span style="color: black;">and</span> <span style="color: black;">3</span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">6.<span style="color: black;">针对</span>多张大数据量(<span style="color: black;">这儿</span>几百条就算大了)的表JOIN,要先分页再JOIN,否则<span style="color: black;">规律</span>读会很高。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">7.索引并不是越多越好,索引固然<span style="color: black;">能够</span><span style="color: black;">加强</span>相应的 select 的效率,但<span style="color: black;">同期</span><span style="color: black;">亦</span>降低了 insert 及 update 的效率,<span style="color: black;">由于</span> insert 或 update 时有可能会重建索引,<span style="color: black;">因此</span><span style="color: black;">怎么样</span>建索引需要<span style="color: black;">谨慎</span><span style="color: black;">思虑</span>,视<span style="color: black;">详细</span><span style="color: black;">状况</span>而定。一个表的索引数最好不要超过6个,若太多则应<span style="color: black;">思虑</span><span style="color: black;">有些</span>不常<span style="color: black;">运用</span>到的列上建的索引<span style="color: black;">是不是</span>有 必要。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">8.<span style="color: black;">尽可能</span><span style="color: black;">运用</span>数字型字段,若只含数值信息的字段<span style="color: black;">尽可能</span>不要设计为字符型,这会降低<span style="color: black;">查找</span>和连接的性能,并会<span style="color: black;">增多</span>存储开销。这是<span style="color: black;">由于</span>引擎在处理<span style="color: black;">查找</span>和连 接时会逐个比较字符串中每一个字符,而<span style="color: black;">针对</span>数字型而言只需要比较一次就够了。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">9.<span style="color: black;">尽可能</span>避免向客户端返回大数据量,若数据量过大,应该<span style="color: black;">思虑</span>相应<span style="color: black;">需要</span><span style="color: black;">是不是</span><span style="color: black;">恰当</span>。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">10.<span style="color: black;">尽可能</span>避免大事务操作,<span style="color: black;">加强</span>系统并发能力。</span></p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">Web前端性能优化</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">Web前端指网站业务<span style="color: black;">规律</span>需要优化,<span style="color: black;">包含</span>:</span></p>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/60adf34aaf5f4d0b8a072f2d16325aca~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1722603254&x-signature=K5RlJS3lrDEdNDPMILPRKxhI%2Fx8%3D" style="width: 50%; margin-bottom: 20px;"></div>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">1.浏览器加载</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">2.网站视图模型</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">3.<span style="color: black;">照片</span>服务</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">4.CDN服务等</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">重点</span>优化手段有优化浏览器<span style="color: black;">拜访</span>,<span style="color: black;">运用</span>反向代理,CDN等。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">1.浏览器<span style="color: black;">拜访</span>优化</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">(1)减少http请求</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">HTTP协议是无状态的应用层协议,<span style="color: black;">寓意</span>着每次HTTP请求都需要简历通信链路,进行数据传输,而在服务器端,<span style="color: black;">每一个</span>HTTP都需要<span style="color: black;">起步</span>独立的线程去处理,这些通信和服务的开销都很昂贵,减少HTTP请求的数目可有效<span style="color: black;">加强</span><span style="color: black;">拜访</span>性能。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">减少HTTP请求的<span style="color: black;">重点</span>手段是:</strong></span></p><span style="color: black;">合并CSS,以及压缩CSS<span style="color: black;">体积</span></span><span style="color: black;">合并JavaScript,以及压缩JS<span style="color: black;">体积</span></span><span style="color: black;">合并<span style="color: black;">照片</span></span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">将浏览器一次<span style="color: black;">拜访</span>需要的JavaScript,CSS合并成一个文件,<span style="color: black;">这般</span>浏览器就只需要一次请求。多张<span style="color: black;">照片</span>合并成一张,<span style="color: black;">倘若</span>每张<span style="color: black;">照片</span>都有<span style="color: black;">区别</span>的超链接,可<span style="color: black;">经过</span>CSS偏移响应鼠标点击操作,构造<span style="color: black;">区别</span>的URL。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">(2)<span style="color: black;">运用</span>浏览器缓存</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">对一个网站而言,CSS,JavaScript,Logo,图标等这些静态资源文件更新的频率都比较低,而这些文件又几乎是每次HTTP请求都需要的,<span style="color: black;">倘若</span>将这些文件缓存在浏览器中,<span style="color: black;">能够</span>极好地改善性能。<span style="color: black;">经过</span><strong style="color: blue;">设置HTTP头中Cache-Control和Expires属性,可设定浏览器缓存,缓存时间</strong><span style="color: black;">能够</span>是数天<span style="color: black;">乃至</span>是几个月。有时候,静态资源文件变化需要<span style="color: black;">即时</span>应用到客户端浏览器,这种<span style="color: black;">状况</span><span style="color: black;">能够</span><span style="color: black;">经过</span>改变文件名实现,<span style="color: black;">例如</span><span style="color: black;">通常</span>会在JavaScript后面<strong style="color: blue;">加上一个版本号</strong>,使浏览器刷新修改的文件。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">(3)启用压缩</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">在服务器端对文件进行压缩,在浏览器端对文件解压缩,可有效较少通信传输的数据量。文本文件的压缩效率科大80%以上。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">(4)CSS放在页面最上面,JavaScript放在页面最下面</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">浏览器会在下载完<span style="color: black;">所有</span>CSS之后对<span style="color: black;">全部</span>页面进行渲染,<span style="color: black;">因此呢</span>最好的做法是将CSS放在页面最上面,让浏览器尽快下载CSS。JS则想法,浏览器在加载JS后立即执行,有可能会阻塞<span style="color: black;">全部</span>页面,<span style="color: black;">导致</span>页面<span style="color: black;">表示</span>缓慢,<span style="color: black;">因此呢</span>JS最好放在页面最下面。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">(5)减少Cookie传输</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">一方面,Cookie<span style="color: black;">包括</span>在每次请求和响应中,太大的Cookie会严重影响数据传输,<span style="color: black;">因此呢</span><span style="color: black;">那些</span>数据需要写入Cookie需要<span style="color: black;">谨慎</span><span style="color: black;">思虑</span>,<span style="color: black;">尽可能</span>减少Cookie中传输的数据量。另一方面,<span style="color: black;">针对</span>某些静态资源的<span style="color: black;">拜访</span>,如CSS,JS等,发送Cookie<span style="color: black;">无</span><span style="color: black;">道理</span>,<span style="color: black;">能够</span><span style="color: black;">思虑</span>静态资源<span style="color: black;">运用</span>独立域名<span style="color: black;">拜访</span>,避免请求静态资源时发送Cookie,减少Cookie传输的次数。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">2.CDN加速</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">CDN(Content Distribute Network,内存分发网络)的<strong style="color: blue;">本质上仍然是一个缓存,<span style="color: black;">况且</span>将数据缓存在离用户<span style="color: black;">近期</span>的<span style="color: black;">地区</span></strong>,是用户以最快速度获取数据,即<span style="color: black;">所说</span>网络<span style="color: black;">拜访</span><span style="color: black;">第1</span>跳。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">CDN<span style="color: black;">通常</span>缓存的是静态资源,如<span style="color: black;">照片</span>,文件,CSS,Script脚本,静态网页</strong>等,<span style="color: black;">然则</span>这些文件<span style="color: black;">拜访</span>频率很高,将其缓存在CDN可<span style="color: black;">极重</span>改善网页的打开速度。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">3.反向代理</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">传统代理服务器<span style="color: black;">位置于</span>浏览器<span style="color: black;">一边</span>,代理浏览器将HTTP请求发送到互联网上,而反向代理服务器<span style="color: black;">位置于</span>网站机房<span style="color: black;">一边</span>,代理网站Web服务器接收HTTP请求。和传统代理服务器<span style="color: black;">能够</span><span style="color: black;">守护</span>浏览器安全<span style="color: black;">同样</span>,反向代理服务器<span style="color: black;">亦</span><span style="color: black;">拥有</span><span style="color: black;">守护</span>网站安全的<span style="color: black;">功效</span>,来自互联网的<span style="color: black;">拜访</span>请求必须经过代理服务器,相当于在Web服务器和可能的网络攻击之间<span style="color: black;">创立</span>了一个屏障。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">除了安全功能,代理服务器<span style="color: black;">亦</span><span style="color: black;">能够</span><span style="color: black;">经过</span>配置缓存功能加速Web请求,当用户<span style="color: black;">第1</span>次<span style="color: black;">拜访</span>静态内容的时候,静态内容就被缓存在反向代理服务器上,<span style="color: black;">这般</span>当其他用户<span style="color: black;">拜访</span>该静态内容的时候,就<span style="color: black;">能够</span>直接从反向代理服务器返回,加速Web请求响应速度,减轻服务器负载要。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">以上</p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;">更加多</span>分布式架构系列、阿里架构师进阶系列,请查看以下<span style="color: black;">文案</span>:</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><a style="color: black;">阿里架构师进阶从0到1<span style="color: black;">所有</span>合集(<span style="color: black;">意见</span><span style="color: black;">保藏</span>)</a></p>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/117f6578409d46a3881f4b65106833e9~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1722603254&x-signature=4o2T4hhyEViKxZnp%2FQ4mIRKqxZk%3D" style="width: 50%; margin-bottom: 20px;"></div>
感谢您的精彩评论,为我带来了新的思考角度。 期待与你深入交流,共探知识的无穷魅力。 楼主发的这篇帖子,我觉得非常有道理。 你的努力一定会被看见,相信自己,加油。 在遇到你之前,我对人世间是否有真正的圣人是怀疑的。 你的留言真是温暖如春,让我感受到了无尽的支持与鼓励。 “沙发”(SF,第一个回帖的人) 你的留言真是温暖如春,让我感受到了无尽的支持与鼓励。
页:
[1]