常用网站性能优化办法
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Web性能优化始终是当务之急,尤其是在竞争如此激烈的<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>网络速度较慢的用户和移动设备上的用户而言!</p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">常用web优化<span style="color: black;">办法</span></h1>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">1. HTTP请求减少</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">一次完整的请求都需要经过队列等待、 DNS寻址、与服务器<span style="color: black;">创立</span>连接、发送请求、等待服务器响应、下载数据<span style="color: black;">这般</span>一个 “漫长” 而<span style="color: black;">繁杂</span>的过程。<span style="color: black;">一般</span>,网页请求的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>为6-12个)。为避免瓶颈,<span style="color: black;">运用</span>资源合并、雪碧图等以减少了单个页面的请求数量。从而减少HTTP请求和加载网页所需的往返次数。减少HTTP请求是最重要的优化技术,其影响最大。</p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">2.文件压缩</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Web页面<span style="color: black;">是由于</span>HTML、CSS和JavaScript等代码文件<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>将代码文件减少多达80%,从而<span style="color: black;">加强</span>站点响应速度。<span style="color: black;">一般</span><span style="color: black;">运用</span>webpack、gulp或grunt来压缩web代码, <span style="color: black;">运用</span>tinypng来压缩<span style="color: black;">照片</span>。</p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">3. 浏览器缓存</h1>
<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>样式表,JavaScript文件,图像等)<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>存储在用户的浏览器缓存中。</p>
<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>浏览器缓存文件?</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">当浏览器从<span style="color: black;">咱们</span>的Web服务器请求文件时,服务器将执行的操作之一<span style="color: black;">便是</span>发送文件的HTTP标头。文件的HTTP标头<span style="color: black;">包括</span><span style="color: black;">相关</span>所请求文件的元数据,以及<span style="color: black;">相关</span>浏览器应<span style="color: black;">怎样</span>处理文件的说明。</p>
<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>指定的标准HTTP标头字段之一是Cache-Control来设置缓存方式,Cache-Control<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>Cache-Control标头字段来告诉浏览器<span style="color: black;">是不是</span>应该缓存文件,以及应该缓存文件多<span style="color: black;">长期</span>。</p>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/pgc-image/bb2d98eb7c57449292c6f9dd524dec1a~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1722586351&x-signature=Mqr4dDeEbApYa%2BcUN9KwhUc8b28%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>在DevTools 的Response Headers中看到Cache-control字段</p><span style="color: black;">Cache</span>-Control: <span style="color: black;">max</span>-age=<span style="color: black;">2592000</span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">顺便说一句,max-age以秒为单位指定。2,592,000秒= 30天。</p>
<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>最佳实践是将文件缓存的时间尽可能长。</p>
<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>max-age为不经常更改的文件(例如网站的LOGO,JS文件和CSS文件)设置更长的时间。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">文件类型缓存<span style="color: black;">连续</span>时间CSS1年JavaScript1年<span style="color: black;">照片</span>(例如PNG,JPG,GIF)1个月HTML不<span style="color: black;">运用</span>缓存</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">针对</span>SVG文件,<span style="color: black;">咱们</span><span style="color: black;">能够</span><span style="color: black;">运用</span>svg-sprite-loader来创建一个属于自己的图标库:</p>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/pgc-image/2314d3323d6f4c839c7aeb307a5f1cac~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1722586351&x-signature=E3qYRBp%2F9ZfJl9OYfsxtx8q4hcM%3D" style="width: 50%; margin-bottom: 20px;"></div>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">4. 开启GZIP</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">虽然开启GZIP压缩<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>:</p>较旧的浏览器:某些浏览器可能仍<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>上,您可能只需要压缩“三大文件”(HTML,CSS和JavaScript)。CPU负载:动态压缩内容会占用CPU时间并节省带宽。<span style="color: black;">一般</span>鉴于压缩速度和CPU的性能限制,<span style="color: black;">一般</span>将压缩等级设置为6(随着压缩级别的<span style="color: black;">上升</span>,压缩比有所<span style="color: black;">加强</span>,但到了级别6后,很难再<span style="color: black;">加强</span>,并且压缩时间和压缩比例成正<span style="color: black;">关联</span>)。<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>Nodejs<span style="color: black;">做为</span>服务器,<span style="color: black;">能够</span><span style="color: black;">运用</span>compression插件来开启gzip。<span style="color: black;">倘若</span><span style="color: black;">运用</span>nginx<span style="color: black;">做为</span>静态资源服务器,开启gzip<span style="color: black;">办法</span>如下:</p><span style="color: black;">gzip</span> <span style="color: black;">on</span>;
<span style="color: black;">gzip_min_length</span> <span style="color: black;">1k</span>;
<span style="color: black;">gzip_buffers</span> <span style="color: black;">4</span> <span style="color: black;">16k</span>;
<span style="color: black;">gzip_http_version</span> <span style="color: black;">1</span>.<span style="color: black;">0</span>;
<span style="color: black;">gzip_comp_level</span> <span style="color: black;">6</span>;
<span style="color: black;">gzip_types</span>text/plain application/javascript application/x-javascript text/javascript text/xml text/css image/jpeg image/jpg image/gif image/svg image/png;<span style="color: black;">gzip_disable</span> <span style="color: black;">"MSIE \."</span>;
<span style="color: black;">gzip_vary</span> <span style="color: black;">on</span>;<h1 style="color: black; text-align: left; margin-bottom: 10px;">5. 预加载</h1>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">DNS预取-DNS Prefetch</h1>
<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>特定的URL来获取资产,以便浏览器<span style="color: black;">能够</span>尽快解析DNS。假设<span style="color: black;">咱们</span>需要URL中的资源如图像或音频等文件需要从www.gogoing.site网站下下载。在HTML的<head>中,加入以下代码:</p><span style="color: black;"><<span style="color: black;">link</span> <span style="color: black;">rel</span>=<span style="color: black;">"dns-prefetch"</span> <span style="color: black;">href</span>=<span style="color: black;">"//www.gogoing.site"</span>></span>
<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>需要等待DNS<span style="color: black;">查询</span>。Chrome<span style="color: black;">始终</span>在做类似的事情。<span style="color: black;">倘若</span>您仅在URL栏中键入域名的一小部分,它将自动预解析DNS(有时<span style="color: black;">乃至</span>预渲染页面),从而节省了<span style="color: black;">每一个</span>请求至关重要的毫秒数。</p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">资源预取-Prefetch</h1><span style="color: black;"><<span style="color: black;">link</span> <span style="color: black;">rel</span>=<span style="color: black;">"prefetch"</span> <span style="color: black;">href</span>=<span style="color: black;">"//cloud.gogoing.site/files/2020-08-07/95baf0bf-5878-4723-8ea0-159822f693ed.jpg"</span>></span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Prefetch和DNS Prefetch相同。Prefetch应主要用于预加载静态资源,例如图像,CSS和JavaScript文件。<span style="color: black;">全部</span>文件将下载并<span style="color: black;">保留</span>在浏览器缓存中。<span style="color: black;">亦</span><span style="color: black;">能够</span>预取HTML文档。</p>
<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>其他要执行的任务下载资源文件。<span style="color: black;">倘若</span>用户的网络连接较慢,它<span style="color: black;">亦</span>将完全忽略大文件。</p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">子资源- subresource</h1><span style="color: black;"><<span style="color: black;">link</span> <span style="color: black;">rel</span>=<span style="color: black;">"subresource"</span> <span style="color: black;">href</span>=<span style="color: black;">"//cloud.gogoing.site/files/2020-08-07/95baf0bf-5878-4723-8ea0-159822f693ed.jpg"</span>></span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">subresource与Prefetch相同。都是从服务器预下载指定的文件,并将其存储在浏览器的缓存中。<span style="color: black;">然则</span><span style="color: black;">区别</span>的是,<span style="color: black;">按照</span>Chromium文档,它的工作方式如下:</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">LINK rel=“subresource”<span style="color: black;">供给</span>了一种新的链接关系类型,其语义与LINK rel="prefetch"<span style="color: black;">区别</span>。尽管rel="prefetch"<span style="color: black;">供给</span>了低优先级的资源下载,以供后续页面<span style="color: black;">运用</span>,而rel="subresource"则<span style="color: black;">准许</span>及早加载当前页面中的资源。</p>
<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>它subresource,否则请<span style="color: black;">运用</span>prefetch。</p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">预渲染-Prerender</h1>
<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>所有必要静态资源的URL在后台完全加载和设置。您<span style="color: black;">能够</span>想象它是在新选项卡中预先打开URL,但在用户<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>的活动都将在后台进行。</p>
<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>下,<span style="color: black;">咱们</span>都会<span style="color: black;">同期</span><span style="color: black;">运用</span>Prefetch和Prerender来预加载HTML文档。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">任何丢失的文件都会产生HTTP 404 错误。<span style="color: black;">倘若</span>请求一个不存在的脚本文件,<span style="color: black;">由于</span>浏览器在请求脚本文件的时候,即便是返回404,它<span style="color: black;">亦</span>会尝试去<span style="color: black;">根据</span>Javascript的方式解析响应中的内容。这无疑会<span style="color: black;">增多</span><span style="color: black;">非常多</span>处理的时间。</p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">6. 重绘和回流</h1>
<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>先回顾一下浏览器的工作原理:</p>浏览器解析HTML源代码,并构造一个DOM树,其中<span style="color: black;">每一个</span>HTML标签在树中都有一个对应的节点,标签之间的文本块<span style="color: black;">亦</span>会生成一个文本节点。DOM树中的根节点是documentElement(<html>标记)浏览器解析CSS代码:<span style="color: black;">基本</span>规则在User-Agent样式表(浏览器默认设置)中,<span style="color: black;">而后</span>可能有用户样式表,作者样式表,<span style="color: black;">外边</span>样式,导入样式,内联样式以及<span style="color: black;">最后</span>样式被编码为styleHTML标签的属性接下来是构造渲染树(render tree)。渲染树有点像DOM树,但不完全匹配。渲染树会获取样式信息,<span style="color: black;">因此呢</span>,<span style="color: black;">倘若</span>您将元素<span style="color: black;">隐匿</span>display: none,则它将不会出<span style="color: black;">此刻</span>渲染树中。其他不可见元素(例如,head以及其中的所有元素)<span style="color: black;">亦</span>是如此。另一方面,例如在渲染树状文本节点中可能存在* 用多个节点<span style="color: black;">暗示</span>的DOM元素。渲染树中的节点<span style="color: black;">叫作</span>为box(CSS box 中的盒模型),<span style="color: black;">每一个</span>节点都有CSS框属性-宽度,高度,边框,边距等构造渲染树后,<span style="color: black;">针对</span><span style="color: black;">每一个</span>visible节点,匹<span style="color: black;">协同</span>适的节点CSSOM rules并应用它们,<span style="color: black;">而后</span>浏览器在屏幕上绘制渲染树节点。<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p9-sign.toutiaoimg.com/pgc-image/00013eea040f4763811546716080aeda~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1722586351&x-signature=wypHoj4ZPAjOf2MfcLPW%2FNQIogs%3D" style="width: 50%; margin-bottom: 20px;"></div>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">重绘-repaint</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">因为</span>节点属性的更改或样式更改(例如更改opacity,color,bac<span style="color: black;">公斤</span>round-color,visibility),<span style="color: black;">因此呢</span>需要更新屏幕的某些部分。此屏幕更新<span style="color: black;">叫作</span>为重绘(repaint)。</p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">回流-reflow</h1>
<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>为回流。更改单个元素会影响所有的子元素,祖先元素和兄弟元素。</p>
<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>重绘。</p>
<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>回流:</p>激活伪类,如:hover内容输入,如input输入添加、删除样式表添加、删除、更新DOM节点<span style="color: black;">运用</span>offsetWidth和offsetHeight为DOM节点设置动画以及<span style="color: black;">运用</span>JS来块操作DOM节点<span style="color: black;">运用</span>display: none(重绘和回流)或visibility: hidden(仅重绘,<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>DOM节点用户操作,如<span style="color: black;">调节</span>窗口<span style="color: black;">体积</span>,更改字体<span style="color: black;">体积</span>或滚动<h1 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;">怎样</span>减少重绘和回流</h1>避免<span style="color: black;">运用</span>表格进行布局<span style="color: black;">经过</span>为容器设置固定高度来限制受影响的元素<span style="color: black;">运用</span>offsetWidth和offsetHeight时, 先将其缓存到本地变量中,不要每次直接从元素属性中读取<span style="color: black;">尽可能</span><span style="color: black;">经过</span>添加/修改className来<span style="color: black;">掌控</span>节点样式,且减少CSS规则层级以及<span style="color: black;">运用</span><span style="color: black;">繁杂</span>的CSS<span style="color: black;">选取</span>器批量更新DOM,且减少DOM深度。<span style="color: black;">运用</span>documentFragment来操作DOM变化数据。更新/克隆/替换节点时,先将节点样式设置为display: none, 替换完成后再移出display: none样式(总共2个回流和2个重绘),<h1 style="color: black; text-align: left; margin-bottom: 10px;">7. 避免301重定向</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">重定向是性能的杀手,应该尽可能避免<span style="color: black;">运用</span>它们。重定向将产生额外的往返时间(RTT),<span style="color: black;">因此呢</span>在浏览器<span style="color: black;">乃至</span><span style="color: black;">起始</span>加载其他资源之前,加载初始HTML文档所需的时间将<span style="color: black;">快速</span><span style="color: black;">增多</span>一倍。</p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">8. 浏览器存储</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">运用</span>浏览器存储(localStorage或sessionStorage)来存储网站中<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>首页的快速加载和减少白屏时间。</p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">9. 避免404错误</h1>
<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>动态,请关注 https://www.gogoing.site</p>
<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;">微X</span>公众号-<strong style="color: blue;">前端学堂</strong>,<span style="color: black;">更加多</span>精彩<span style="color: black;">文案</span>等着你!</p>
谷歌网站排名优化 http://www.fok120.com/ 论坛外链网http://www.fok120.com/ 谷歌网站排名优化 http://www.fok120.com/ i免费外链发布平台 http://www.fok120.com/ 外链论坛的成功举办,是与各位领导、同仁们的关怀和支持分不开的。在此,我谨代表公司向关心和支持论坛的各界人士表示最衷心的感谢! 外链发布社区 http://www.fok120.com/
页:
[1]