• 欢迎使用超级蜘蛛查,网站外链优化,收藏快捷键 CTRL + D

推荐 网站性能优化提升的30个方法策略


网站性能优化是一个复杂的话题,涉及的技能很多,如何通过优化网页性能提高用户体验,网站性能优化包含了网站响应的所有方面,如缓存、设置CDN、重构、资源优化等,但所有这些都可以逐步完成。作为一名web开发人员,您应该将本文作为参考,并始终记住在实验前后测量性能。

网站性能优化提升的30个方法策略

1、尽量减少HTTP请求次数

合并js

合并css

图片sprite

2、延迟加载内容

图片懒加载

数据懒加载(点击查看更多)

功能懒加载(曝光或者点击后加载html模块、js功能模块)

3、使用离线缓存

把常用的变动又少的js、css、图片存储到localstorage,第二次访问的时候直接走本地缓存。在移动端使用广泛。

4、CSS、JS放置正确位置

把css放在head中,保证页面看到的时候样式是对的。

把js放到body里最后位置,防止加载js阻塞页面。

5、静态资源压缩

图片、CSS、JS在发布前要压缩。

6、静态资源使用多个域名

对于图片、CSS、JS,可使用几个域名,可以并发加载。

7、静态资源使用cdn存储

用户与你网站服务器的接近程度会影响响应时间的长短。 可以把静态资源放到内容分发网络(Content Delivery Network, CDN)中加快访问速度。

8、预加载

在某个功能还没展现时,在空闲时间预先加载相关图片或者js代码

9、DOM操作优化

使用JavaScript访问DOM元素比较慢,因此为了获得更多的应该页面,应该做到:

缓存已经访问过的有关元素

线下更新完节点之后再将它们添加到文档树中

避免使用JavaScript来修改页面布局

10、优化算法

在js处理中优化查找、排序算法。尽量少使用嵌套循环。

11、使用事件代理

有时候我们会感觉到页面反应迟钝,这是因为DOM树元素中附加了过多的事件句柄并且些事件句病被频繁地触发。这就是为什么说使用event delegation(事件代理)是一种好方法了。如果你在一个div中有10个按钮,你只需要在div上附加一次事件句柄就可以了,而不用去为每一个按 钮增加一个句柄。事件冒泡时你可以捕捉到事件并判断出是哪个事件发出的。 

你同样也不用为了操作DOM树而等待onload事件的发生。你需要做的就是等待树结构中你要访问的元素出现。你也不用等待所有图像都加载完毕。 你可能会希望用DOMContentLoaded事件来代替 事件应用程序中的onAvailable方法。

12、减少DNS查找次数

减少主机名的数量还可以减少页面中并行下载的数量。减少DNS查找次数可以节省响应时间,但是减少并行下载却会增加响应时间。我的指导原则是把这些页面中 的内容分割成至少两部分但不超过四部分。这种结果就是在减少DNS查找次数和保持较高程度并行下载两者之间的权衡了。

13、根据域名划分页面内容

把页面内容划分成若干部分可以使你最大限度地实现平行下载。由于DNS查找带来的影响你首先要确保你使用的域名数量在2个到4个之间。例如,你可以把用到的HTML内容和动态内容放在www.example.org上,而把页面各种组件(图片、脚本、CSS)分别存放在 statics1.example.org和statics.example.org上。

网站性能优化提升的30个方法策略

14、可缓存的AJAX

在一些情况下ajax可使用缓存减少网络开销。

让我们来看一个例子:

一个Web2.0的Email客户端会使用Ajax来自动完成对用户地址薄的下载。如果用户在上次使用过Email web应用程序后没有对地址薄作任何的修改,而且Ajax响应通过Expire或者Cacke-Control头来实现缓存,那么就可以直接从上一次的缓存中读取地址薄了。必须告知浏览器是使用缓存中的地址薄还是发送一个新的请求。这可以通过为读取地址薄的Ajax URL增加一个含有上次编辑时间的时间戳来实现,

例如,&t=11900241612等。如果地址薄在上次下载后没有被编辑过,时间戳就不变,则从浏览器的缓存中加载从而减少了一次HTTP请求过程。如果用户修改过地址薄,时间戳就会用来确定新的URL和缓存响应并不匹配,浏览器就会重要请求更新地址薄。 即使你的Ajxa响应是动态生成的,哪怕它只适用于一个用户,那么它也应该被缓存起来。这样做可以使你的Web2.0应用程序更加快捷。

15、减少DOM元素数量

一个复杂的页面意味着需要下载更多数据,同时也意味着JavaScript遍历DOM的效率越慢。比如当你增加一个事件句柄时在500和5000个 DOM元素中循环效果肯定是不一样的。 大量的DOM元素的存在意味着页面中有可以不用移除内容只需要替换元素标签就可以精简的部分。你在页面布局中使用表格了吗?你有没有仅仅为了布局而引入更多的元素呢?

也许会存在一个适合或者在语意是更贴切的标签可以供你使用。 YUI CSS utilities可以给你的布局带来巨大帮助:grids.css可以帮你实现整体布局,font.css和reset.css可以帮助你移除浏览器默 认格式。它提供了一个重新审视你页面中标签的机会,比如只有在语意上有意义时才使用,而不是因为它具有换行效果才使用它。 

DOM元素数量很容易计算出来,只需要在Firebug的控制台内输入: document.getElementsByTagName(‘*’).length 那么多少个DOM元素算是多呢?这可以对照有很好标记使用的类似页面。比如Yahoo!主页是一个内容非常多的页面,但是它只使用了700个元素(HTML标签)。

16、使iframe的数量最小

ifrmae元素可以在父文档中插入一个新的HTML文档。了解iframe的工作理然后才能更加有效地使用它,这一点很重要。

优点: 解决加载缓慢的第三方内容如图标和广告等的加载问题; Security sandbox; 并行加载脚本;

的缺点: 即时内容为空,加载也需要时间; 会阻止页面加载; 没有语意;

17、不要出现 404页面错误

HTTP请求时间消耗是很大的,因此使用HTTP请求来获得一个没有用处的响应(例如404没有找到页面)是完全没有必要的,它只会降低用户体验而不会有一点好处。 有些站点把404错误响应页面改为“你是不是要找***”,这虽然改进了用户体验但是同样也会浪费服务器资源(如数据库等)。最糟糕的情况是指向外部 JavaScript的链接出现问题并返回404代码。首先,这种加载会破坏并行加载;其次浏览器会把试图在返回的404响应内容中找到可能有用的部分当 作JavaScript代码来执行。

18、为文件头指定Expires或Cache-Control

这条守则包括两方面的内容: 对于静态内容:设置文件头过期时间Expires的值为“Never expire”(永不过期) 对于动态内容:使用恰当的Cache-Control文件头来帮助浏览器进行有条件的请求 网页内容设计现在越来越丰富,这就意味着页面中要包含更多的脚本、样式表、图片和Flash。第一次访问你页面的用户就意味着进行多次的HTTP请求,但 是通过使用Expires文件头就可以使这样内容具有缓存性。它避免了接下来的页面访问中不必要的HTTP请求。Expires文件头经常用于图像文件, 但是应该在所有的内容都使用他,包括脚本、样式表和Flash等。

 浏览器(和代理)使用缓存来减少HTTP请求的大小和次数以加快页面访问速度。Web服务器在HTTP响应中使用Expires文件头来告诉客户端内容需 要缓存多长时间。下面这个例子是一个较长时间的Expires文件头,它告诉浏览器这个响应直到2020年4月15日才过期。 Expires: Thu, 15 Apr 2020 20:00:00 GMT 如果你使用的是Apache服务器,可以使用ExpiresDefault来设定相对当前日期的过期时间。

下面这个例子是使用 ExpiresDefault来设定请求时间后10年过期的文件头: ExpiresDefault “access plus 10 years” 要切记,如果使用了Expires文件头,当页面内容改变时就必须改变内容的文件名。

依Yahoo!来说我们经常使用这样的步骤:在内容的文件名中加上版本号,如yahoo_2.0.6.js。 使用Expires文件头只有会在用户已经访问过你的网站后才会起作用。当用户首次访问你的网站时这对减少HTTP请求次数来说是无效的,因为浏览器的缓 存是空的。因此这种方法对于你网站性能的改进情况要依据他们“预缓存”存在时对你页面的点击频率(“预缓存”中已经包含了页面中的所有内容)。 Yahoo!建立了一套测量方法,我们发现所有的页面浏览量中有75~85%都有“预缓存”。通过使用Expires文件头,增加了缓存在浏览器中内容的 数量,并且可以在用户接下来的请求中再次使用这些内容,这甚至都不需要通过用户发送一个字节的请求。

19、Gzip压缩文件内容

服务器开启Gzip,能减少50%以上的传输。

尽早刷新输出缓冲

当用户请求一个页面时,无论如何都会花费200到500毫秒用于后台组织HTML文件。在这期间,浏览器会一直空闲等待数据返回。在PHP中,你可以使用 flush()方法,它允许你把已经编译的好的部分HTML响应文件先发送给浏览器,这时浏览器就会可以下载文件中的内容(脚本等)而后台同时处理剩余的 HTML页面。这样做的效果会在后台烦恼或者前台较空闲时更加明显。

20简单请求使用GET方式

Yahoo!Mail团队发现,当使用XMLHttpRequest时,浏览器中的POST方法是一个“两步走”的过程:首先发送文件头,然后才发送数据。因此使用GET最为恰当,因为它只需发送一个TCP包(除非你有很多cookie)。IE中URL的最大长度为2K,因此如果你要发送一个超过2K的 数据时就不能使用GET了。 一个有趣的不同就是POST并不像GET那样实际发送数据。根据HTTP规范,GET意味着“获取”数据,因此当你仅仅获取数据时使用GET更加有意义(从语意上讲也是如此),相反,发送并在服务端保存数据时使用POST。

21、避免使用CSS表达式(Expression)

CSS表达式是动态设置CSS属性的强大(但危险)方法。Internet Explorer从第5个版本开始支持CSS表达式。下面的例子中,使用CSS表达式可以实现隔一个小时切换一次背景颜色: background-color: expression( (new Date()).getHours()%2 ? “#B8D4FF” : “#F08A00″ ); 如上所示,expression中使用了JavaScript表达式。

CSS属性根据JavaScript表达式的计算结果来设置。

expression方法在其它浏览器中不起作用,因此在跨浏览器的设计中单独针对Internet Explorer设置时会比较有用。

表达式的问题就在于它的计算频率要比我们想象的多。不仅仅是在页面显示和缩放时,就是在页面滚动、乃至移动鼠标时都会要重新计算一次。给CSS表达式增加一个计数器可以跟踪表达式的计算频率。在页面中随便移动鼠标都可以轻松达到10000次以上的计算量。

一个减少CSS表达式计算次数的方法就是使用一次性的表达式,它在第一次运行时将结果赋给指定的样式属性,并用这个属性来代替CSS表达式。如果样式属性 必须在页面周期内动态地改变,使用事件句柄来代替CSS表达式是一个可行办法。如果必须使用CSS表达式,一定要记住它们要计算成千上万次并且可能会对你 页面的性能产生影响。

网站性能优化提升的30个方法策略

22、使用外部JavaScript和CSS

很多性能规则都是关于如何处理外部文件的。但是,在你采取这些措施前你可能会问到一个更基本的问题:JavaScript和CSS是应该放在外部文件中呢还是把它们放在页面本身之内呢? 在实际应用中使用外部文件可以提高页面速度,因为JavaScript和CSS文件都能在浏览器中产生缓存。内置在HTML文档中的 JavaScript和CSS则会在每次请求中随HTML文档重新下载。这虽然减少了HTTP请求的次数,却增加了HTML文档的大小。从另一方面来说, 如果外部文件中的JavaScript和CSS被浏览器缓存,在没有增加HTTP请求次数的同时可以减少HTML文档的大小。 

关键问题是,外部JavaScript和CSS文件缓存的频率和请求HTML文档的次数有关。虽然有一定的难度,但是仍然有一些指标可以一测量它。如果一 个会话中用户会浏览你网站中的多个页面,并且这些页面中会重复使用相同的脚本和样式表,缓存外部文件就会带来更大的益处。 许多网站没有功能建立这些指标。对于这些网站来说,最好的坚决方法就是把JavaScript和CSS作为外部文件引用。

比较适合使用内置代码的例外就是 网站的主页,如Yahoo!主页和My Yahoo!。主页在一次会话中拥有较少(可能只有一次)的浏览量,你可以发现内置JavaScript和CSS对于终端用户来说会加快响应时 间。 对于拥有较大浏览量的首页来说,有一种技术可以平衡内置代码带来的HTTP请求减少与通过使用外部文件进行缓存带来的好处。其中一个就是在首页中内置 JavaScript和CSS,但是在页面下载完成后动态下载外部文件,在子页面中使用到这些文件时,它们已经缓存到浏览器了。

23、用link代替@import

前面的最佳实现中提到CSS应该放置在顶端以利于有序加载呈现。 在IE中,页面底部@import和使用

作用是一样的,因此最好不要使用它。

24、避免使用滤镜

IE独有属性AlphaImageLoader用于修正7.0以下版本中显示PNG图片的半透明效果。这个滤镜的问题在于浏览器加载图片时它会终止内容的 呈现并且冻结浏览器。在每一个元素(不仅仅是图片)它都会运算一次,增加了内存开支,因此它的问题是多方面的。 完全避免使用AlphaImageLoader的最好方法就是使用PNG8格式来代替,这种格式能在IE中很好地工作。如果你确实需要使用 AlphaImageLoader,请使用下划线_filter又使之对IE7以上版本的用户无效。

25、剔除重复脚本

在同一个页面中重复引用JavaScript文件会影响页面的性能。你可能会认为这种情况并不多见。对于美国前10大网站的调查显示其中有两家存在重复引 用脚本的情况。有两种主要因素导致一个脚本被重复引用的奇怪现象发生:团队规模和脚本数量。如果真的存在这种情况,重复脚本会引起不必要的HTTP请求和 无用的JavaScript运算,这降低了网站性能。 在Internet Explorer中会产生不必要的HTTP请求,而在Firefox却不会。在Internet Explorer中,如果一个脚本被引用两次而且它又不可缓存,它就会在页面加载过程中产生两次HTTP请求。即时脚本可以缓存,当用户重载页面时也会产 生额外的HTTP请求。 除增加额外的HTTP请求外,多次运算脚本也会浪费时间。在Internet Explorer和Firefox中不管脚本是否可缓存,它们都存在重复运算JavaScript的问题。 一个避免偶尔发生的两次引用同一脚本的方法是在模板中使用脚本管理模块引用脚本。在HTML页面中使用script 标签引用脚本的最常见方法就是: 在PHP中可以通过创建名为insertScript的方法来替代:

为了防止多次重复引用脚本,这个方法中还应该使用其它机制来处理脚本,如检查所属目录和为脚本文件名中增加版本号以用于Expire文件头等。

26、减小Cookie体积

HTTP coockie可以用于权限验证和个性化身份等多种用途。coockie内的有关信息是通过HTTP文件头来在web服务器和浏览器之间进行交流的。因此保持coockie尽可能的小以减少用户的响应时间十分重要。 有关更多信息可以查看Tenni Theurer和Patty Chi的文章“When the Cookie Crumbles”。这们研究中主要包括:

去除不必要的coockie 使coockie体积尽量小以减少对用户响应的影响 注意在适应级别的域名上设置coockie以便使子域名不受影响 设置合理的过期时间。较早地Expire时间和不要过早去清除coockie,都会改善用户的响应时间。

27、对于静态资源使用无coockie域名

当浏览器在请求中同时请求一张静态的图片和发送coockie时,服务器对于这些coockie不会做任何地使用。因此他们只是因为某些负面因素而创建的 网络传输。所有你应该确定对于静态内容的请求是无coockie的请求。创建一个子域名并用他来存放所有静态内容。

如果你的域名是www.example.org,你可以在static.example.org上存在静态内容。但是,如果你不是在 www.example.org 上而是在顶级域名example.org设置了coockie,那么所有对于static.example.org的请求都包含coockie。在这种情 况下,你可以再重新购买一个新的域名来存在静态内容,并且要保持这个域名是无coockie的。Yahoo!使用的是 ymig.com,YouTube使用的是ytimg.com,Amazon使用的是images-anazon.com等等。

28、不要在HTML中缩放图像

不要为了在HTML中设置长宽而使用比实际需要大的图片。如果你需要: 那么你的图片(mycat.jpg)就应该是100×100像素而不是把一个500×500像素的图片缩小使用。

29、favicon.ico要小而且可缓存

favicon.ico是位于服务器根目录下的一个图片文件。它是必定存在的,因为即使你不关心它是否有用,浏览器也会对它发出请求,因此最好不要返回一 个404 Not Found的响应。由于是在同一台服务器上,它每被请求一次coockie就会被发送一次。这个图片文件还会影响下载顺序,例如在IE中当你在 onload中请求额外的文件时,favicon会在这些额外内容被加载前下载。 因此,为了减少favicon.ico带来的弊端,要做到:

文件尽量地小,最好小于1K; 在适当的时候(也就是你不要打算再换 favicon.ico的时候,因为更换新文件时不能对它进行重命名)为它设置Expires文件头。你可以很安全地把Expires文件头设置为未来的几个月。你可以通过核对当前favicon.ico的上次编辑时间来作出判断。Imagemagick可以帮你创建小巧的 favicon。

30、跳转的正确使用

在用户和HTML文档中间增加一个跳转,会拖延页面中所有元素的显示,因为在HTML文件被加载前任何文件(图像、 Flash等)都不会被下载。 有一种经常被网页开发者忽略却往往十分浪费响应时间的跳转现象。这种现象发生在当URL本该有斜杠(/)却被忽略掉时。例如,当我们要访问http: //astrology.yahoo.com/astrology 时,实际上返回的是一个包含301代码的跳转,它指向的是http://astrology.yahoo.com/astrology/ (注意末尾的斜杠)。在Apache服务器中可以使用Alias 或者 mod_rewrite或者the DirectorySlash来避免。

连接新网站和旧网站是跳转功能经常被用到的另一种情况。这种情况下往往要连接网站的不同内容然后根据用户的不同类型(如浏览器类型、用户账号所属类型)来 进行跳转。使用跳转来实现两个网站的切换十分简单,需要的代码量也不多。尽管使用这种方法对于开发者来说可以降低复杂程度,但是它同样降低用户体验。一个 可替代方法就是如果两者在同一台服务器上时使用Alias和modrewrite和实现。如果是因为域名的不同而采用跳转,那么可以在web服务器通过使用 Alias或者modrewirte进行跳转。

本文链接: http://www.cjzzc.com/article/1293.html

上一篇:网站优化权威指南:百度发布了最新的搜索页面质量标准

下一篇:百度正在暴力截流SEO,企业老板应该怎么做

相关文章推荐

  1. 网页制作对于简体繁体中网站字体如何定义?
  2. 现在做网站有没有的钱赚,做什么样的网站赚钱?
  3. 如何优化网站打开速度,网站性能优化的32种方法
  4. 分析为什么网站优化一年比一年难做的10个原因
  5. 掌握百度搜索引擎分词技术,使网站优化更上一层楼
  6. 企业网站一套统一的优化流程
  7. 网站没有排名怎么办,影响网站排名的因素
  8. 网站优化权威指南:百度发布了最新的搜索页面质量标准
  9. 网站性能优化提升的30个方法策略
  10. 【网站优化必看】网站死链介绍及设置方法
  11. 移动端网站怎么优化才能提升SEO排名?
  12. 2022年SEO还值得做吗,分享网站SEO的12点建议
  13. 如何进行网站优化

蜘蛛技巧最新文章

  1. 网站安全到底有多重要?常见的安全风险来源有哪些...
  2. 为什么很多人觉得做抖音短视频很难做呢?
  3. 51.la统计代码被劫持跳转违法网站JS文件被...
  4. 网页制作对于简体繁体中网站字体如何定义?
  5. 现在做网站有没有的钱赚,做什么样的网站赚钱?
  6. SEO不行了?有流量就有搜索,有搜索就有SEO
  7. 互联网营销中流量词是什么,怎么挖掘流量词?
  8. 微信公众号排名优化,揭秘公众号搜一搜SEO搜索...
  9. 抖音短视频的推荐算法机制,竞品分析的必备能力
  10. 短视频文案号从0起号做到1万以上粉丝全套流程

蜘蛛外链文章推荐

  1. Web应用漏洞原理,Web十大常见漏洞
  2. 什么是webshell?WebShell基础知...
  3. 搜索引擎百度蜘蛛详解,百度蜘蛛IP分析
  4. SEO推广就是搜索引擎优化和推广
  5. SEO超级外链工具,吸引搜索引擎蜘蛛抓取
  6. 企业网站改版需要注意那些事项
  7. 网站SEO高质量文章内容更新的10条经验
  8. 网站SEO关键词布局?如何创建关键词词库?
  9. 百度快速收录使用说明,快速收录API提交
  10. 网站收录量,反链,关键词排名,权重相关问题

超级蜘蛛工具

  • 网站链接HTTP状态批量检测_在线批量检测网站链接状态_超级蜘蛛查
  • 百度关键词排名查询_网站关键词排名批量查询_超级蜘蛛查
  • 百度收录查询_在线百度收录批量查询_超级蜘蛛查
  • 域名IP地址批量查询_在线批量查询网站IP地址_超级蜘蛛查
  • 超级外链发布工具_在线免费批量发布SEO外链_超级蜘蛛查
  • 网页蜘蛛模拟抓取测试工具_超级蜘蛛工具_超级蜘蛛查

您可能感兴趣的文章

  • 如何进行网站优化
  • 互联网创业,请用实力赚钱
  • 二次创业成功人士的19个经验与教训
  • SEO概念原理,SEO赚钱秘籍
  • 微信高级使用三十六条技巧(微信素养)
  • 为什么要做内容营销,怎么做内容营销
  • 小公司该不该看重规章制度
  • 在二线城市看互联网
  • 实现SEO快排发包技术原理解密
  • 吸引百度蜘蛛让页面快速收录的方法?

天下网标王网站关键词优化排名怎么做的网站关键词优化服务热线井陉网站快照优化宜良网站优化特点福建网站优化崇明区电子网站优化价格福田外贸网站优化大庆网站建设优化公司张槎网站优化培训虹口区网站优化定制方案有没有优化的网站中山出口型网站seo优化网站如何简单seo优化网站网络优化沧州网站优化推广上海网站竞价优化案例我的世界基岩版动作优化网站木材行业网站优化方案绵阳网站优化快速排名软件哪里有网站优化代理加盟项目平台网站优化行业的发展方向辽宁传统行业网站优化咨询热线seo网站推广优化浙江网站优化推广案例泗水县网站seo优化排名优化企业网站网站推广平台怎么优化家装行业网站优化推广有哪些长安搜索网站优化产品推广360网站排名优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化