本文地址:https://021dir.com/news/978.html
ETag的问题在于它是基于唯一的属性生成的雅虎优化,该属性可以区分网站所在的服务器。当浏览器从一台服务器获取页面内容并在另一台服务器上进行验证时,ETag将不匹配。对于使用服务器组和处理请求的网站,这种情况非常普遍。默认情况下,Apache和IIS将在ETag中嵌入数据,这将大大减少多台服务器之间的文件验证冲突。
Apache 1. 3和2. x中的ETag格式为inode-size-timestamp。即使文件位于不同服务器上的同一目录中,文件大小,权限,时间戳等也都相同,但是它们的内部代码在不同服务器上是不同的。
IIS 5. 0和IIS 6. 0具有类似的处理ETag的机制。 IIS中的ETag格式为Filetimestamp:ChangeNumber。使用ChangeNumber跟踪IIS配置更改。网站使用的不同IIS服务器之间的ChangeNumber不同。尽管不同服务器上的Apache和IIS对于相同的内容具有不同的ETag,但用户不会收到快速而又小的304响应;相反,他们将收到正常的200响应并下载所有内容。如果您的网站仅放在一台服务器上,则将不存在此问题。但是,如果您的网站设置在多台服务器上,并使用Apache和IIS形成默认的ETag配置,则用户获取页面的速度将相对较慢,服务器将传输更多内容,占用更多带宽,并且代理也将将不会有效地缓存您的网站内容。即使您的内容具有Expires标头,只要用户单击“刷新”或“重新加载”按钮,就会发送相应的GET请求。
如果您没有使用ETag提供的灵活身份验证模式,最好简单地删除所有ETag。最后修改的文件头验证基于内容的时间戳。删除ETag文件头将减小响应和最后一个请求中文件的大小。此Microsoft支持文档介绍了如何删除ETag。在Apache中,只需将以下代码行添加到配置文件中即可:
FileETag无
1 5、尽快刷新输出缓冲区
当用户请求页面时,无论如何都要花200到500毫秒来在后台组织HTML文件。在此期间,浏览器将仍然处于空闲状态,等待数据返回。在PHP中,您可以使用flush()方法,该方法允许您先将HTML响应文件的已编译部分发送给浏览器,然后浏览器将能够在下载文件内容(脚本等)的同时背景是在同一时间处理其余的HTML页面。当背景不佳或前台相对空闲时,这种效果会更加明显。
输出缓冲的最佳应用之一就是密切关注
...
为了证明使用这项技术的好处,Yahoo!搜索在研究和完成用户测试方面处于领先地位。
1 6、使用GET完成AJAX请求
雅虎!邮件团队发现,当使用XMLHttpRequest时,浏览器中的POST方法是一个“两步”过程:首先发送文件头,然后发送数据。因此,GET最合适,因为它只需要发送一个TCP数据包(除非您有很多cookie)。 IE中URL的最大宽度为2K,因此,如果要发送超过2K的数据,则不能使用GET。
一个有趣的区别是POST实际上并不发送像GET这样的数据。根据HTTP规范,GET意味着“获取”数据,因此在仅获取数据时(从语法上来说)使用GET更有意义。相反,在服务器上发送和保存数据时,请使用POST。
1 7、将样式表放在底部
在研究Yahoo!的性能时,我们发现将样式表放入文档中会提高页面的下载速度。这是因为将样式表放入其中会逐步加载和显示页面。
注重性能的后端服务器通常希望页面以有序的方式加载。同时,我们也希望浏览器将显示尽可能多的已接收内容。这对于内容较多的页面和互联网速度较慢的用户而言非常重要。将视觉反馈返回给用户(例如进度表)的方式已经得到了充分的研究,并已发布了即将发布的文档。在我们的研究中,HTML页面是进度指示器。当浏览器有序地在顶部加载文件标题,导航栏和徽标时,可以用作等待页面加载的用户的视觉反馈。这样可以整体上改善用户体验。
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。