如何生成以及使用SSH密钥?

使用SSH密钥登陆服务器无需输入服务器密码,同时其安全性也要比其他方式高得多。那么如何生成linux服务器的SSH密钥呢?

创建基于Windows的SSH密钥

首先我们下载一个puttygen;

运行,单击生成(Generate)按钮;

额外的安全设置,您可以输入一个密钥的口令,防止有人通过密钥访问你的文件。

一旦KEY生成,请将其保存在一个安全又不易丢失的地方,此文件丢失无法恢复

选择所有在“粘贴在OpenSSH公钥的文本authorized_keys文件”。这时你需要进入控制面板,使用SSH密钥。

创建基于Linux的SSH密钥

创建和使用SSH是标准的工具,而应该在大多数Linux发行版是目前。用下面的命令,你可以生成SSH密钥。

运行ssh-keygen -t rsa。一个更安全的4096位密钥,run:ssh-keygen -t rsa – B 4096

按Enter键时,问你要保存的位置

输入密钥密码;

运行 cat ~/.ssh/id_rsa.pub

确保备份 ~/.ssh/id_rsa 文件,此文件不可恢复

使用Windows客户端的SSH密语连接服务器

首先下载并运行putty客户端

输入我们服务器的IP地址

点击到SSH–认证 选项菜单

点击浏览我们的密钥文件,然后点击打开即可链接

使用linux客户端的密钥链接服务器

首先确保你的linux机器上有SSH客户端,which ssh 为安装的情况下就先安装一个

发起连接:ssh -i /path/to/id_rsa user@x.x.x.x

使用完毕后使用Ctrl+d结束连接。

 

新上美国多IP开25端口的邮件服务器

美国LW机房现在支持发送邮件了,机器自带254个IP地址。25端口默认开启。可发送邮件。

5台及以上订购可以享受优惠价格。

机器邮件发送时间无法保证,我们无法确定美国机房什么时候会封机器。毕竟美国大环境对版权之类的要求是比较严的,这点可以接受再买。

购买联系QQ:28575315

联邦小项,美国多IP邮件服务器

机器配置价格如下:

E3-1230/16G/1T  254个IP  100M独享 900元/月

 

机房介绍链接:https://www.homedt.cn/uslw

网站访问优化之-内容篇-使Ajax可缓存

使Ajax可缓存

Ajax引用的好处之一是它为用户提供即时反馈,因为它从后端Web服务器异步请求信息。但是,使用Ajax并不能保证用户不会在等待那些异步的JavaScript和XML响应返回时扭动他的拇指。在许多应用程序中,用户是否在等待取决于如何使用Ajax。例如,在基于Web的电子邮件客户端中,用户将不断等待Ajax请求的结果,以查找与其搜索条件相匹配的所有电子邮件。记住“异步”并不意味着“即时”。

为了提高性能,优化这些Ajax响应非常重要。提高Ajax性能的最重要方法是使响应可缓存,如添加过期或缓存控制头中所述。其他一些规则也适用于Ajax:
Gzip组件
减少DNS查找
缩小JavaScript
避免重定向
配置ETags

我们来看一个例子。Web 2.0电子邮件客户端可能使用Ajax来下载自动完成的用户地址簿。如果用户自上次使用电子邮件Web应用程序以来尚未修改通讯录,则可以从缓存中读取以前的地址簿响应(如果该Ajax响应可以使用未来的Expires或Cache-Control标头进行缓存)。必须通知浏览器何时使用先前缓存的地址簿响应与请求新的响应。这可以通过向地址簿Ajax URL添加时间戳来指示用户最后一次修改她的地址簿,例如,&t=1190241612。如果地址簿自上次下载以来没有被修改,则时间戳将是相同的,地址簿将从浏览器的缓存中读取,从而消除额外的HTTP往返。如果用户修改了地址簿,则时间戳会确保新的URL与缓存的响应不匹配,浏览器将请求更新的地址簿条目。

即使您的Ajax响应是动态创建的,并且可能只适用于单个用户,但它们仍可以被缓存。这样做会使您的Web 2.0应用程序更快。

尽早的释放缓冲

当用户请求页面时,后台服务器可能需要200到500毫秒的时间来拼接HTML页面。在此期间,浏览器在等待数据到达时处于空闲状态。在PHP中,你有函数flush()。它允许您将部分就绪的HTML响应发送到浏览器,以便浏览器可以在您的后端忙于HTML页面的其余部分时开始获取组件。这个好处主要是在繁忙的后台或前台看到的。

考虑刷新的好地方就在HEAD之后,因为头部的HTML通常更容易生成,并允许您包含任何CSS和JavaScript文件,以使浏览器在后端仍在处理的同时开始并行读取。

例:

... <! - css,js - >
 </ HEAD>
 <?php flush(); ?>
 <BODY>
 ... <! - content - >

雅虎 搜索率先研究和真正的用户测试,以证明使用这种技术的好处。

使用GET进行AJAX请求

在雅虎 邮件小组发现,在使用时XMLHttpRequest,POST在浏览器中分两步实现:首先发送邮件头,然后发送数据。所以最好使用GET,它只需要一个TCP数据包发送(除非你有很多的cookie)。IE中最大的URL长度是2K,所以如果你发送超过2K的数据,你可能无法使用GET。

一个有趣的副作用是POST没有实际发布任何数据的行为像GET。基于HTTP规范,GET是为了检索信息,所以当你只是请求数据时使用GET(在语义上)是有意义的,而不是发送数据到服务器端存储。

网站访问优化之-内容篇-减少DNS查找

减少DNS查找

域名系统(DNS)将主机名映射到IP地址,就像电话本将人名映射到他们的电话号码一样。当您在浏览器中键入www.yahoo.com时,浏览器联系的DNS解析器会返回该服务器的IP地址。DNS有成本。DNS通常需要20-120毫秒才能查找给定主机名的IP地址。直到DNS查找完成,浏览器才能从此主机名下载任何内容。

DNS查找缓存更好的性能。这种缓存可以在由用户的ISP或局域网维护的特殊缓存服务器上发生,但是在个人用户的计算机上也存在缓存。DNS信息保留在操作系统的DNS缓存(Microsoft Windows上的“DNS客户端服务”)中。大多数浏览器都有自己的缓存,与操作系统的缓存分开。只要浏览器在自己的缓存中保存了一条DNS记录,就不会因操作系统请求记录而烦恼。

按照DnsCacheTimeout注册表设置的指定,Internet Explorer默认缓存DNS查找30分钟 。Firefox缓存DNS查找1分钟,由network.dnsCacheExpiration配置设置控制。(Fasterfox将其更改为1小时。)

当客户端的DNS缓存为空(对于浏览器和操作系统)时,DNS查找的数量等于网页中唯一主机名的数量。这包括页面URL,图像,脚本文件,样式表,Flash对象等中使用的主机名。减少唯一主机名的数量可以减少DNS查找的次数。

减少唯一主机名的数量有可能减少页面中发生的并行下载量。避免DNS查找会缩短响应时间,但减少并行下载可能会增加响应时间。我的准则是将这些组件分成至少两个但不超过四个主机名。这在减少DNS查询和允许高度平行下载之间取得了很好的折衷。

缩小JavaScript和CSS

缩小是从代码中删除不必要的字符以减小其大小从而缩短加载时间的做法。代码缩小时,所有注释都将被删除,以及不需要的空白字符(空格,换行符和制表符)。在JavaScript的情况下,由于下载的文件的大小减小,所以这提高了响应时间性能。JSMin和YUI Compressor是用于缩小JavaScript代码的两个流行工具。YUI压缩机也可以缩小CSS。

混淆是可以应用于源代码的替代优化。它比缩小更复杂,因此更容易由于迷惑步骤本身而产生错误。在对美国十大网站的调查中,缩小比例达到了21%,而混淆度达到25%。尽管混淆的尺寸减小了很多,但缩小JavaScript的风险较小。

除了缩小外部脚本和样式之外,内嵌<script>和<style>块也可以并且应该被缩小。即使你用gzip脚本和样式,缩小它们的大小也会减少5%或更多。随着JavaScript和CSS的使用和大小的增加,通过缩小代码所节省的成本也会增加。

避免重定向

重定向是使用301和302状态码完成的。以下是301响应中HTTP标头的示例:

HTTP / 1.1 301永久移动
 位置:http://example.com/newuri
 内容类型:文本/ HTML

浏览器自动将用户带到在该Location字段中指定的URL 。重定向所需的所有信息都在标题中。响应的主体通常是空的。尽管他们的名字,301,也不是一个302响应在实践中被缓存,除非额外的头,如Expires或Cache-Control,表明它应该是。元刷新标记和JavaScript是将用户引导到其他URL的其他方法,但是如果您必须执行重定向,则首选技术是使用标准的3xx HTTP状态代码,主要是为了确保后退按钮正常工作。

要记住的主要是重定向减慢用户体验。在用户和HTML文档之间插入重定向会延迟页面中的所有内容,因为页面中没有任何内容可以呈现,并且在HTML文档到达之前不会开始下载任何组件。

最浪费的重定向之一经常发生,Web开发人员通常不知道。当一个URL中应该有一个尾部的斜杠(/)时,就会发生这种情况。例如,访问http://astrology.yahoo.com/astrology会得到一个301响应,其中包含http://astrology.yahoo.com/astrology/的重定向(注意添加的尾部斜线)。如果您使用的是Apache处理程序,则在Apache中通过使用Aliasor mod_rewrite或者DirectorySlash指令修复。

将旧网站连接到新网站是重定向的另一个常见用途。其他包括连接网站的不同部分,并根据一定的条件(浏览器类型,用户帐户类型等)指导用户。使用重定向连接两个网站很简单,只需要很少的附加代码。尽管在这些情况下使用重定向会降低开发人员的复杂性,但会降低用户体验。这种重定向的替代方案包括使用Alias和mod_rewrite如果两个代码路径托管在同一台服务器上。如果域名更改是使用重定向的原因,另一种方法是与Alias或组合创建一个CNAME(一个DNS记录,用于创建从一个域名指向另一个域名的别名)mod_rewrite。

删除重复的脚本

在一个页面中包含两次相同的JavaScript文件会使性能受损。这不像你想像的那么不寻常。对美国十大网站的回顾显示,其中两个包含重复的脚本。两个主要因素增加了在单个网页中复制脚本的几率:团队规模和脚本数量。当发生这种情况时,重复的脚本通过创建不必要的HTTP请求而损害了性能,并浪费了JavaScript执行。

不必要的HTTP请求发生在Internet Explorer中,但不在Firefox中。在Internet Explorer中,如果外部脚本包含两次并且不可缓存,则会在加载页面期间生成两个HTTP请求。即使脚本是可缓存的,当用户重新加载页面时,也会发生额外的HTTP请求。

除了产生浪费的HTTP请求之外,浪费时间多次评估脚本。无论脚本是否可缓存,这种冗余JavaScript执行都会在Firefox和Internet Explorer中发生。

避免意外包含同一个脚本两次的一种方法是在模板系统中实现一个脚本管理模块。包含脚本的典型方法是在HTML页面中使用SCRIPT标签。

<script type =“text / javascript”src =“menu_1.0.17.js”> </ script>

PHP中的一个替代方法是创建一个名为的函数insertScript。

<?php insertScript(“menu.js”)?>

除了防止多次插入相同的脚本之外,该函数还可以处理脚本的其他问题,例如依赖性检查和将版本号添加到脚本文件名以支持将来的Expires头文件。

配置ETags

实体标签(ETags)是Web服务器和浏览器用来确定浏览器缓存中的组件是否与源服务器上的组件匹配的机制。(“实体”是另一个词“组件”:图像,脚本,样式表等)ETag被添加来提供一种机制来验证比上一次修改日期更灵活的实体。ETag是唯一标识组件特定版本的字符串。唯一的格式约束是字符串被引用。源服务器使用ETag响应头指定组件的ETag 。

HTTP / 1.1 200 OK
 Last-Modified:Tue,2006年12月12日03:03:59 GMT
 ETag:“10c24bc-4ab-457e1c1f”
 内容长度:12195

之后,如果浏览器必须验证组件,则使用If-None-Match标头将ETag传递回原始服务器。如果ETag匹配,则返回一个304状态码,这个例子减少了12195字节的响应。

GET /i/yahoo.gif HTTP / 1.1
 主持人:us.yimg.com
 If-Modified-Since:星期二,2006年十二月12日03:03:59 GMT
 If-None-Match:“10c24bc-4ab-457e1c1f”
 HTTP / 1.1 304未修改

ETags的问题在于它们通常是使用属性来构建的,这些属性使得它们对于托管站点的特定服务器是唯一的。当浏览器从一台服务器获取原始组件时,ETag将不匹配,并且稍后尝试在另一台服务器上验证该组件,这种情况在使用服务器集群处理请求的网站上非常常见。默认情况下,Apache和IIS都将数据嵌入到ETag中,这大大降低了在具有多个服务器的网站上进行有效性测试的几率。

Apache 1.3和2.x的ETag格式是inode-size-timestamp。虽然给定的文件可能位于多个服务器的相同目录中,并且具有相同的文件大小,权限,时间戳等,但是其inode不同于一个服务器。

IIS 5.0和6.0与ETags有类似的问题。IIS上ETags的格式是Filetimestamp:ChangeNumber。A ChangeNumber是用于跟踪对IIS的配置更改的计数器。ChangeNumber网站后面的所有IIS服务器都不可能是相同的。

最终的结果是由Apache和IIS生成的ETags完全相同的组件不会从一台服务器到另一台服务器。如果ETag不匹配,用户不会收到ETags设计的小而快的304响应; 相反,他们会得到一个正常的200响应以及组件的所有数据。如果您只在一台服务器上托管您的网站,这不是一个问题。但是,如果您有多台托管您的网站的服务器,并且您使用的是默认的ETag配置的Apache或IIS,那么您的用户的页面速度会变慢,您的服务器负载也会增加,消耗的带宽也会越来越多,高效地缓存您的内容。即使你的组件有一个更远的Expires标题,每当用户点击刷新或刷新时,仍然会发出条件GET请求。

如果您没有充分利用ETags提供的灵活验证模型,最好只删除ETag。该Last-Modified头验证基于对组件的时间戳。删除ETag会减少响应和后续请求中的HTTP头的大小。此Microsoft支持文章介绍如何删除ETags。在Apache中,只需将以下行添加到Apache配置文件即可完成:

FileETag没有

网站访问优化之-内容篇-减少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连接发送单个字节。

美国大片地区断网:因技术人员配置失误,BGP路由泄露所致

Level 3这是用服务瘫痪来庆祝被CenturyLink收购的节奏啊!

周一,Level 3粗心大意造成的一个配置失误导致美国和全世界其他地区的互联网连接临时出现大范围中断。

这家知名的全球骨干网提供商承认,西海岸时间今天上午,美国大片地区出现接连不断的故障,尤其是康卡斯特(Comcast)的用户,自己对此事负有责任。与美国网民一样,欧洲和澳大利亚的网民也反映访问某些服务(比如Twitter图片)时遇到了问题,这可能归咎于Level 3导致路由机制出了问题。

Level 3的发言人告诉IT外媒The Register:“11月6日星期一,我们的网络出现了服务中断,结果影响了使用基于IP的服务的部分客户。”

“这次中断是配置错误引起的。我们知道这些服务对我们的客户来说有多重要。我们的技术人员能够在大约90分钟内恢复服务。”

The Register获悉,Level 3引起的路由泄漏(route leak)导致了今天大范围的服务中断。

故障监测服务网站DownDetecter制作了这份故障连接热图,此图显示了今天早些时候这个问题在这片“自由之地”(指美国)有多广泛:

红色是故障区……美国的Level 3故障图,截至中午

Level 3是连接众多大型网络的互联网骨干网之一:要是它出了故障,依赖它的几乎每个客户都一并遭殃。正因为如此,有人还反映康卡斯特在美国的家庭和商业互联网服务出现了大范围的连接问题。这家有线电视公司将连接中断怪罪于Level 3。依赖康卡斯特的VoIP提供商Vonage今天也遇到了宕机,电话服务出现暂时的中断,包括The Register驻旧金山办事处的那些电话。

DownDetector提供的康卡斯特故障图

与此同时,微软的Azure服务公司报告称“网络基础设施”错误在影响进出美国中北部地区的连接。到目前为止微软拒绝发表评论。然而我们获悉,这次故障并不是Level 3引起的,据The Register看到的网络工程师之间的聊天内容显示,微软可能搞坏了其内部路由。

休斯顿,我们有个问题……Azure的通知。

就在传出Level 3闹故障这则新闻前几天,CenturyLink正式证实,美国监管机构已正式批准了这笔涉资340亿美元的股票加现金并购交易,它已完成了对这家骨干网提供商的收购。

这次故障的时机肯定会合CenturyLink的心意,因为它正在竭力将这个最新资产整合到计划为企业客户提供的全球服务网络当中。