网站访问优化之-内容篇-减少HTTP请求 二

Gzip组件

通过网络传输HTTP请求和响应所花费的时间可以通过前端工程师做出的决策大大减少。确实,最终用户的带宽速度,互联网服务提供商,对等交换点的接近度等都超出了开发团队的控制范围。但是还有其他一些影响响应时间的因素。压缩通过减少HTTP响应的大小来缩短响应时间。

从HTTP / 1.1开始,Web客户端通过HTTP请求中的Accept-Encoding标头指示对压缩的支持。

Accept-Encoding:gzip,deflate

如果Web服务器在请求中看到这个头部,它可以使用客户端列出的方法之一压缩响应。Web服务器通过Content-Encoding头在响应中通知Web客户端。

内容编码:gzip

Gzip是目前最流行和最有效的压缩方法。它是由GNU项目开发的,由RFC 1952标准化。你可能看到的唯一的其他压缩格式是压缩,但效果不好,不太受欢迎。

Gzipping通常将响应大小减少大约70%。目前大约90%的互联网流量都是通过支持gzip的浏览器传播的。如果使用Apache,配置gzip的模块取决于您的版本:Apache 1.3使用mod_gzip,而Apache 2.x使用mod_deflate。

浏览器和代理存在已知的问题,这些问题可能导致浏览器期望的不匹配以及与压缩内容有关的接收不匹配。幸运的是,随着使用旧浏览器的情况下降,这些边缘情况正在减少。Apache模块通过自动添加适当的Vary响应头来提供帮助。

服务器根据文件类型选择要压缩的内容,但是通常压缩的内容太有限。大多数网站gzip他们的HTML文件。gzip脚本和样式表也是值得的,但很多网站都错过了这个机会。事实上,压缩包括XML和JSON的任何文本响应都是值得的。图像和PDF文件不应该被压缩,因为它们已经被压缩了。试图gzip他们不仅浪费CPU,但可能会增加文件大小。

尽可能多地缩放文件类型是减少页面重量和加速用户体验的简单方法。

把样式表放在最上面

虽然研究在雅虎的表现!我们发现,移动样式表文件HEAD使页面看起来要加载速度更快。这是因为将样式表放在HEAD中允许页面逐步呈现。

关注性能的前端工程师希望页面逐步加载; 也就是说,我们希望浏览器尽快显示它所拥有的任何内容。这对于有很多内容的网页和Internet连接速度较慢的用户尤其重要。进度指标等给用户视觉反馈的重要性已经得到很好的研究和记录。在我们的例子中,HTML页面是进度指示器!当浏览器逐渐加载页面时,页眉,导航栏,顶部的标志等都作为等待页面的用户的视觉反馈。这改善了整体用户体验。

将样式表放到文档底部附近的问题是,它禁止在许多浏览器(包括Internet Explorer)中进行渐进式呈现。这些浏览器会阻止渲染,以避免在样式更改时重新绘制页面的元素。用户被困在查看空白页面。

的HTML规范明确指出,样式表是被包括在网页的HEAD:“与A,[LINK]可以仅出现在一个文档的HEAD部分,尽管它可能出现任意次数”。这两种替代方案,空白屏幕或无风格内容的闪光都是值得冒险的。最佳解决方案是遵循HTML规范,并将样式表加载到文档HEAD中。

把脚本放在底部

脚本造成的问题是阻止并行下载。的HTTP / 1.1规范建议的浏览器下载不超过两种组分在每主机名平行。如果您从多个主机名提供图像,则可以同时进行两个以上的下载。然而,当脚本正在下载时,浏览器将不会启动任何其他下载,即使在不同的主机名上。

在某些情况下,将脚本移动到底部并不容易。例如,如果脚本使用document.write插入页面内容的一部分,则不能在页面中移动较小的内容。也可能有范围问题。在许多情况下,有办法解决这些情况。

经常出现的另一个建议是使用延迟脚本。该DEFER属性指示该脚本不包含document.write,并且是浏览器可以继续呈现的线索。不幸的是,Firefox不支持该DEFER属性。在Internet Explorer中,该脚本可能会被延期,但不会像预期的那样多。如果一个脚本可以被延期,它也可以被移动到页面的底部。这将使您的网页加载速度更快。

避免使用CSS表达式

CSS表达式是动态设置CSS属性的一种强大而又危险的方法。从版本5开始,它们在Internet Explorer中受到支持,但是从IE8开始已弃用。例如,可以使用CSS表达式将背景颜色设置为每隔一小时交替一次:

background-color:expression((new Date())。getHours()%2?“#B8D4FF”:“#F08A00”);

如此处所示,该expression方法接受一个JavaScript表达式。CSS属性设置为评估JavaScript表达式的结果。该expression方法被其他浏览器忽略,因此在Internet Explorer中设置需要跨浏览器创建一致体验的属性非常有用。

表达的问题在于,他们比大多数人的期望更频繁地被评估。它们不仅在页面呈现和调整大小时进行评估,而且在页面滚动时甚至当用户将鼠标移到页面上时也进行评估。向CSS表达式添加一个计数器可以让我们跟踪CSS表达式被评估的时间和频率。在页面上移动鼠标可以轻松生成超过10,000个评估。

减少CSS表达式计算次数的一种方法是使用一次性表达式,在第一次计算表达式时,它将style属性设置为一个显式值,该值将替换CSS表达式。如果style属性必须在页面的整个生命周期中动态设置,那么使用事件处理程序而不是CSS表达式是另一种方法。如果您必须使用CSS表达式,请记住它们可能会被评估数千次,并可能影响您的页面的性能。

使JavaScript和CSS由外部调用

许多这些性能规则涉及如何管理外部组件。然而,在出现这些问题之前,您应该提出一个更基本的问题:JavaScript和CSS应该包含在外部文件中还是包含在页面本身中?

在现实世界中使用外部文件通常会产生更快的页面,因为浏览器会缓存JavaScript和CSS文件。每次请求HTML文档时,都会下载HTML文档中内联的JavaScript和CSS。这减少了所需的HTTP请求数量,但增加了HTML文档的大小。另一方面,如果JavaScript和CSS处于由浏览器缓存的外部文件中,则在不增加HTTP请求数量的情况下减小HTML文档的大小。

关键因素是外部JavaScript和CSS组件相对于所请求的HTML文档数量的缓存频率。这个因素尽管难以量化,但可以使用各种指标来衡量。如果您的网站上的用户每个会话有多个页面浏览量,并且许多网页重复使用相同的脚本和样式表,则缓存的外部文件可能会带来更大的潜在收益。

许多网站都处于这些指标的中间。对于这些网站,最好的解决方案通常是将JavaScript和CSS部署为外部文件。首选内联的唯一例外是主页,例如Yahoo!的首页和My Yahoo! 。每个会话只有很少(可能只有一个)页面视图的主页可能会发现内联JavaScript和CSS会导致更快的最终用户响应时间。

对于通常是许多页面视图中第一个的首页,有一些技术可以减少内联提供的HTTP请求,以及通过使用外部文件实现的缓存优势。其中一种方法是在首页内嵌JavaScript和CSS,但在页面加载完成后动态下载外部文件。后续页面将引用应该已经在浏览器的缓存中的外部文件。

网站访问优化之-内容篇-减少HTTP请求 一

最小化HTTP请求

最终用户响应时间的80%用于前端。大部分时间都是在下载页面中的所有组件:图像,样式表,脚本,Flash等。减少组件数量又减少了呈现页面所需的HTTP请求数量。这是加快页面访问的关键。

减少页面中组件数量的一种方法是简化页面的设计。但是,有没有办法构建更丰富的内容页面,同时实现快速的响应时间?以下是一些减少HTTP请求数量的技术,同时还支持丰富的页面设计。

组合文件是一种通过将所有脚本合并为一个脚本来减少HTTP请求数量的方法,同样将所有的CSS合并到一个样式表中。当脚本和样式表因页面而异时,将文件组合起来更具挑战性,但是使这部分发布过程改进了响应时间。

CSS精灵是减少图像请求数量的首选方法。将您的背景图像组合成单个图像,并使用CSSbackground-image和background-position属性来显示所需的图像片段。

图像映射将多个图像组合成单个图像。整体大小大致相同,但减少HTTP请求的数量加速了页面。如果图像在页面中连续存在,则图像地图才起作用,例如导航栏。定义图像映射的坐标可能很乏味且容易出错。使用图像地图进行导航也无法访问,所以不推荐。

内嵌图像使用data:URL方案将图像数据嵌入到实际页面中。这可以增加您的HTML文件的大小。将内嵌图像合并到缓存的样式表中是减少HTTP请求并避免增加页面大小的一种方法。所有主流浏览器都不支持内联图片。

减少页面中的HTTP请求数量是开始的地方。这是提高首次访问者性能的最重要的指导方针。正如Tenni Theurer的博客文章“ Browser Cache Usage – Exposed!,您的网站的每日访问者的40-60%进来一个空的缓存。让您的页面快速访问这些首次访问者是更好的用户体验的关键。

使用内容交付网络

用户与Web服务器的距离对响应时间有影响。在多个分布在不同地理位置的服务器上部署您的内容将使您的网页从用户的角度更快加载。但是你应该从哪里开始呢?

作为实现地理上分散的内容的第一步,不要尝试重新设计您的Web应用程序以在分布式架构中工作。根据应用程序的不同,更改架构可能包括艰巨的任务,如同步会话状态和跨服务器位置复制数据库事务。尝试缩短用户与内容之间的距离可能会延迟或不能通过此应用程序体系结构步骤。

请记住,80-90%的最终用户响应时间用于下载页面中的所有组件:图像,样式表,脚本,Flash等。这是性能黄金法则。而不是从重新设计应用程序体系结构的艰巨任务开始,最好先分散您的静态内容。这不仅实现了响应时间的更大缩短,而且由于内容交付网络的缘故,这更容易实现。

内容传送网络(CDN)是分布在多个位置的网络服务器的集合,以更有效地向用户传送内容。选择用于将内容递送给特定用户的服务器通常基于网络邻近度的度量。例如,选择网络跳数最少的服务器或响应时间最快的服务器。

一些大型互联网公司拥有自己的CDN,但使用CDN服务提供商(如Akamai Technologies,EdgeCast或level3)是具有成本效益的。对于创业公司和私人网站来说,CDN服务的成本可能会很高,但是随着目标受众的规模越来越大,变得更加全球化,CDN是实现快速响应的必要条件。在雅虎,将静态内容从其应用程序Web服务器移到CDN(如上所述的第三方以及雅虎自己的CDN)的属性将最终用户的响应时间提高了20%甚至更多。切换到CDN是一个相对简单的代码更改,将显着提高您的网站的速度。

添加一个Expires或一个Cache-Control Header

这个规则有两个方面:

对于静态组件:通过设置远期Expires标题实现“永不过期”策略
对于动态组件:使用适当的Cache-Control标题来帮助浏览器提供有条件的请求

网页设计越来越丰富,这意味着更多的脚本,样式表,图像和Flash页面。首次访问您的页面可能需要发出多个HTTP请求,但是通过使用Expires头文件,您可以使这些组件可缓存。这可以避免后续页面浏览中不必要的HTTP请求。过期头文件通常与图像一起使用,但是它们应该用于包括脚本,样式表和Flash组件的所有组件。

浏览器(和代理)使用缓存来减少HTTP请求的数量和大小,使网页加载更快。Web服务器使用HTTP响应中的Expires标头告诉客户端可以缓存组件的时间。这是一个很远的将来Expires标题,告诉浏览器,这个回应将不会陈旧,直到2010年4月15日。

到期时间:2010年4月15日星期四20:00:00 GMT

如果您的服务器是Apache,请使用ExpiresDefault指令设置相对于当前日期的到期日期。这个ExpiresDefault指令的例子将Expires日期从请求时间设置为10年。

过期默认“访问加10年”

请记住,如果你使用了一个远期的Expires头文件,那么只要组件的改变,你就必须改变组件的文件名。在Yahoo! 我们经常使这一步成为构建过程的一部分:版本号被嵌入到组件的文件名中,例如yahoo_2.0.6.js。

使用远期未来只有在用户已经访问过您的网站后,才会影响页面浏览。当用户首次访问您的网站并且浏览器的缓存为空时,它对HTTP请求的数量没有影响。因此,这种性能改善的影响取决于用户多久访问一次带有缓冲区的页面。(一个“引导缓存”已经包含了页面中的所有组件。)我们在Yahoo! 并发现带有引导缓存的页面浏览量为75-85%。通过使用远期未来的Expires头,您可以增加浏览器缓存的组件数量,并在后续页面浏览中重新使用,而不会通过用户的Internet连接发送单个字节。

服务器维护需要注意的9个方面

我们一直听到这个问题:“一旦运行,我该如何维护服务器?”

有些困难的答案是没有一个解决方案适用于每个人,但是从我们的经验来看,我们可以分享您在考虑服务器每周或每月维护计划时至少考虑的最重要的步骤。

这些提示虽然必须符合重要性,但将有助于保持您的服务器安全和更新,只要知道某些事情发生错误即可。

1.查看您的资源利用率

了解服务器如何执行的最佳方法之一是检查资源利用率。查看资源使用情况 – 这将有助于您了解服务器上发生的情况。

2.查看登录名和用户帐号

您希望确保用户帐户和尝试(无论是失败还是成功)都没有任何惊险的来访问您的服务器。

您可以确切地看出当前登录的用户w。该last命令将列出每个最近的登录,并且该lastlog命令将告诉您每个用户上次登录到服务器的时间。通常,这些命令将访问日志文件解析成更加人性化的格式。

您可以一起使用这些命令来精确地了解某人何时访问您的服务器。

3.设置备份系统并验证它是否正常工作

没有关于哪个备份系统最好的细节太多,无论是自定义rsync备份还是将服务器与另一个服务器镜像,这里重要的是建立一个系统,然后检查,以确保它按照您需要的方式工作。没有什么比发生灾难性故障只是意识到你的备份系统在六个星期前下降。

4.更新您的操作系统(特别是安全包)

大多数Linux发行版更为经常更新,特别是在基于安全性的修补程序时。Debian和CentOS比Ubuntu有点稳定,但它们都在不断变化。

过期的软件包可能包含可能允许黑客访问服务器或降低性能的漏洞。幸运的是,升级在这些系统上很容易!

Ubuntu的/ Debian的

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get clean

CentOS的

$ sudo clean all
$ sudo yum update

5.设置自动更新

如果您不用担心定期更新服务器,可以设置自动更新。该亲自动更新的是,这是一个不太件事给忘了,而骗子是你有点控制,如果更新出现问题,就更难追查违规的包。

有关启用自动更新的详细信息,请查看以下三个指南:

centos

debian

Ubuntu

6.更新您的应用程序(如Wordpress)

直接从您的发行版的存储库更新软件包将确保大量软件(如Nginx或Apache)保持最新,但这些存储库之外的任何内容都不会变化。这包括大多数CMS软件,如Wordpress,或几乎任何安装通过我们的教程。

您应该阅读每个这些服务的文档,并确保您定期更新它们。一些有更新的图形/仪表板界面提示,有些则需要shell。

这也适用于采用真实的软件到这些服务,如插件。这些天,Wordpress的核心是非常稳固的,安全的,但是如果你安装了十几个插件,那么所有来自不同技能的独立开发人员,如果不遵守这些要求,你可能会冒险冒险更新。

7.更改密码

关于是否强制密码更改是一个明智的安全决策,有很多争议。人们必须记住的密码越多,他们写的越多,或者使用不安全的密码。

但是,如果您自己使用服务器,那么更改密码的风险就更小,而且还有很大的收获。

在一定的天数之后强制更改密码是很容易的,或者每隔一段时间就会跳到那里,并发出passwd命令。

8.确保您的服务可以正常处理停机时间

这对于那些通过服务器运行任务关键型服务的人来说,这是一个更先进的一点,但是对于那些不想要长时间看不到的任何东西,这些都是重要的。

假设您的服务器托管在数据中心有意外的停机时间,并且您的节点被迫关闭。回来后,您的服务会自动启动,并恢复功能,还是手动执行?

每隔一段时间就可以从干净的平板电脑开始,尤其是如果您还可以验证您的服务在重新启动后知道该怎么办,或者断开连接功能,则不会受损。如果事件没有正确返回,请查看每个关键服务的日志,并查看为什么它们不会自动启动。

9.关闭/卸载未使用的服务

我们的很多客户使用他们的服务器作为教育平台,或作为新功能的测试平台,这意味着他们会留下一台运行他们关心的服务的服务器,以及已经废弃或移动的其他六个服务器。

如果您不再使用特定的服务或软件,通常最好卸载它 – 您在服务器上放置的所有内容都会增加潜在的攻击向量,而在这方面更少。

当通过发行版的包管理器卸载程序包,只是要小心,你不也卸载任何依赖于你其实服务也想继续运行。

更多资源

最终,您的VPS维护计划的确切配置取决于您,我们根本无法推荐任何适用于所有人和所有应用程序的计划/清单。

一般来说,我们建议每周或每半年一次执行一些操作(如系统更新)和其他操作(如更改密码)。

你甚至可能想要使用特殊的安全审计软件,如Lynis。

有什么其他关键的VPS维护技巧您认为我们应该注意吗?我们很高兴与他人分享 – 只需在下面添加评论,我们将其添加到列表中!

排除网络连接问题

你刚刚发现你不再能访问你的VPS。我们来看看是什么导致了这个问题。我们将使用ping.pe进行故障排除。

正常输出

以下是ping.pe的正常输出:上述输出显示,VPS可以从世界各地访问。如果您看到此输出,但您仍然无法连接到VPS,那么最有可能会出现一个软件配置问题,您可以使用KiwiVM中的Interactive Console进行解决。

没有连接,完全停电

以下输出显示了所有位置的100%数据包丢失,意味着您的VPS完全无法访问:首先,使用KiwiVM来验证您的VPS是否正在运行。下一步,验证您的防火墙配置。以下文章解释了如何做到这一点:https : //bandwagonhost.com/knowledgebase.php?action=displayarticle&id=24如果防火墙没有问题,那么很可能是您的VPS中的网络配置有问题。解决这些问题的最简单的方法是执行操作系统重新安装。您还可以使用KiwiVM中的Interactive Console来排除这些问题,但具体步骤超出了本文的范围。

连接速度慢,丢包

以下是数据包丢失的情况:在这个特例中,我们可以看到,所有中国地区(除了一个)都有8.8.8.8的重数据包丢失。进一步诊断这个问题打开了全面的报告:从这份报告显然,这个问题在中国境内。如果有疑问,我们建议在返回路径上执行mtr(相反方向 – 从受影响的IP返回到您的家庭IP)。由于路径不对称,您可能会发现一些不同的输出,这可能会澄清问题。

解决linux系统连接问题:iptables

在许多情况下,连接问题可能由于iptables配置不正确而引起。经常错误配置的iptables是由于通过KiwiVM控制面板进行的迁移而最近更改VPS的IP地址的结果。在这样的情况下,您将完全锁定您的VPS,并且ping.pe输出如下所示:请注意,VPS完全无法访问。如果您打开报告,您将看到以下内容:从上面的示例可以看出,物理节点“v403.sioru.com”运行正常,但是我们正在ping的特定VPS是离线的。验证iptables确实是最快的方法是使用Interactive控制台

在KiwiVM中停止iptables服务(请在线搜索如何停止iptables,确切的命令取决于您的分发)。如果网络连接恢复,那么我们知道iptables是问题。

要检查您的iptables规则,请发出以下命令:

iptables -L -n; iptables -L -n -t nat

请注意,为了使此命令正常工作,您的iptables服务必须重新启动。

如果您在输出中看到旧的VPS IP,特别是在NAT表中,则必须手动修改规则(再次,在线搜索如何删除和添加iptables规则)。

或者,您可以使用以下命令擦除所有iptables规则:

iptables -F; iptables -t nat -F; iptables-save> / etc / sysconfig / iptables

作为最后的手段,您可以通过安装新的操作系统来重新加载VPS,从而完全恢复所有的网络连接。

hosts文件修改教程

hosts文件位置C:\Windows\System32\drivers\etc\hosts

然后修改前确保系统设置查看所有文件后缀。

设置位置,控制面板-文件夹设置-查看

然后我们打开hosts文件地址,将此文件备份一份,位置随便放。

然后复制到桌面一份(在原位置该文件是不可修改状态,所以必须在其他位置修改后替换回去)

在里面添加需要的内容即可。

完成后保存,然后复制修改好的文件,打开原位置复制替换进去即可。

 

域名转入转出通用要求

域名转入:

转入的域名需要符合以下转入规则:
1、真实存在的域名才可进行域名转入;
2、域名注册60天后才可进行域名转入;
3、域名到期前15天不能转入;
4、域名状态为禁止转移的不能转入;
5、域名刚完成转移60天内的不能转入;
6、域名处于纠纷、仲裁中或法院限制转出的不能转入。
温馨提醒:
1、域名转入前,请确认域名未开启注册信息保护服务;
2、如域名是您在原注册商过期后进行的续费,建议您在续费操作45天后再做转入,否则根据注册局的规定,此类情况下的域名转入将无法增加一年

域名转出:

在满足条件的情况下即可在线索取转移密码并进行转移。国际域名在线转移功能完全以手机号码和注册联系人邮箱为准,只要用户回复了确认信,即认为是注册人的意思表示。
为保障您自身的合法权益不受侵害,在您根据网页提示步骤申请索取国际域名转移密码前,请您仔细阅读《国际域名在线转移协议》及国家相关规定,并再次确认注册联系人手机号码及电子邮箱,我们将会详细记录您此次索取密码的所有操作,请您慎重操作!
国际域名转移的限制规则(下列情况下不能进行域名转移):
(一)该域名注册/转入后不满60天;
(二)该域名处于拖欠注册费用状态中;
(三)该域名持有者主体身份不清楚或存有争议;
(四)该域名处于再司法机构,仲裁机构或域名争议解决机构处理期;