>本文由New Relic赞助。感谢您支持使SitePoint成为可能的赞助商! 多年来,我们在Sitepoint上进行了很多演出,我们相信现在是时候以一些更高级的方面来重新审视该主题了。本文中提到的方法与PHP无关,但是如果正确使用,您可以确定它们将使您的应用程序达到全新的水平。请注意,我们不会涵盖通常的内容 - 对CS,JS和图像的要求更少,这意味着更快的网站和类似的提示是常识。相反,我们将专注于一些鲜为人知/用过的升级。>
钥匙要点
不适用于所有情况,但是以一种使您可以删除尽可能多的DOM元素的方式构建您的HTML。
>您还可以通过省略一些不需要的标签来减少HTML文档的文件大小。这确实看起来往往相当骇人听闻,并且似乎符合标准,因此只有在部署到生产时才能完成 - 这样您就不会混淆其他从事相同代码的开发人员。<span><span><span><div</span>></span> </span> <span><span><span><div</span>></span> </span> <span><span><span><p</span>></span>Some of my<span><span><span</span>></span>text<span><span></span</span>></span>.<span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span><span><span><span></div</span>></span></span>
预摘要
<span><span><span><div</span>></span> </span> <span><span><span><p</span>></span>Some of my<span><span><span</span>></span>text<span><span></span</span>></span>.<span><span></p</span>></span> </span><span><span><span></div</span>></span></span>
>当您期望用户访问您的网站后使用用户到另一个域时,或者,例如,您将静态资源托管在诸如images.example.com之类的子域上时,DNS预摘要可以帮助删除它为删除它所需的几个miliseconds DNS服务器将images.example.com解析为IP地址。收益并不多,但积累,它可以削减一些不错的加载时间,从您提出的用户浏览器的要求。 DNS预摘要是在
中使用进行的:,并在所有主要浏览器中支持。如果您有任何子域,您希望当前的访问者使用当前的页面完成后加载,没有理由不使用DNS Prefetch。 >当您知道下一次访问中需要一些资源时,您可以预摘要并将它们存储在浏览器缓存中。例如,如果您有一个博客,并且在该博客上有一篇分为两部分的文章,则可以确保预载第二部分中的静态资源(即图像)。这样就这样做了:。 Picasa Web专辑广泛使用此图表将2个以下图像预先添加到您当前正在查看的图像。在较旧的浏览器上,您可以通过在JavaScript中加载幻影映像元素来实现这一目标:
<span><span><span><div</span>></span> </span> <span><span><span><div</span>></span> </span> <span><span><span><p</span>></span>Some of my<span><span><span</span>></span>text<span><span></span</span>></span>.<span><span></p</span>></span> </span> <span><span><span></div</span>></span> </span><span><span><span></div</span>></span></span>
>要注意的一件事是仅预取用我们确定或几乎确定用户需要的资源。如果用户正在阅读分页的博客文章,请肯定,请先预取。如果用户在表单提交屏幕上,请肯定会在提交后将其重定向到屏幕上可以预见的资源。不要将整个网站预摘要,也不要随机预取 - 考虑带宽,并谨慎使用预取,请牢记移动设备。移动设备通常在有限的带宽上,预先载荷2MB映像可能不会非常用户友好。您可以通过选择性预取料来避免这些问题 - 检测用户何时在移动设备上或在有限的带宽连接上,并且在这种情况下不要使用预取。更好的是,将设置添加到您的网站上,并要求人们同意预取用 - 将他们的喜好保存到LocalStorage中,并使用用户代理字符串将其放置,从而允许他们分别允许或不允许在每个设备上进行预取。
>您还可以预摘要和predender整个页面。预摘要页面意味着获取其DOM含量 - HTML。由于大多数内容实际上是JavaScript,CSS和图像,因此通常不会提供太大的速度提升 - 页面预取的内容未获取内容。目前,这种类型的提取仅由Firefox完全支持。预处理是另一回事 - 预先启动仅在Chrome中,它不仅可以在幕后获取DOM,而且还以CSS,JS和图像的形式获取所有相关内容。实际上,它已经在背景中呈现整个页面 - 该页面坐在RAM中,完全打开和渲染,等待访问。当用户单击Prerendered链接时,这可以立即进行更改,但引入了与上一段中所述的相同问题 - 带宽可能会受到影响。此外,您的服务器将此Prerender注册为访问,因此,如果用户实际上改变了主意并且最终不会打开Prerendered网站,则可能会得到一些偏斜的分析。 prerender语法为:。
。 目前,只有一种适当的方法可以检测您的页面已被预先处理或预取,这就是页面可见性API,目前在Android浏览器和Opera Mini以外的所有主要浏览器中都支持该页面。您使用此API来确保该页面实际上是在观看,然后启动您可能正在执行的任何分析。> css
很像SQL在数据库世界中解释,也有一个漂亮的CSS解释工具 - https://github.com/josh/css-ecplain。您可以使用它来分析CSS选择器。如果您想立即对其进行测试,请将此文件的内容粘贴到浏览器的控制台中,然后发出命令,例如cssexplain('。item.subclass.anotherclass')。
>使用CSS 2D翻译以移动对象而不是顶部/左/左。当保罗·爱尔兰人和克里斯·科耶(Paul Irish)和克里斯·科耶(Chris Coyer)做得非常出色时,尝试详细解释这一点是没有意义的。确保您阅读/观看它们的材料,并在可能的情况下烘烤这些知识 -
在可能的
>。您可能已经注意到,诸如Facebook和Google take 年龄之类的网站在打开它们时可以滚动。几乎就像他们需要时间进行热身。这是当今许多网站上的问题,也是一个巨大的UX Gutpunch。使您的页面顺利滚动并不像看起来那样困难,尤其是当您知道要寻找什么时。减少滚动滞后的关键是最大程度地减少油漆 - 油漆是当屏幕上的内容从框架上变化时会发生什么,并且浏览器需要在屏幕上重新粉刷它 - 它需要计算新的外观,并将这种新外观拍打到渲染网站的其中一层包括。有关这些问题的更多信息,并了解如何诊断油漆问题,请参阅Paul Lewis的出色帖子。
>服务器Google的PagesPeed模块是一个模块,您可以安装到Nginx和Apache中,该模块自动实现了一些最佳实践以进行网站优化。该模块评估客户所感知的网站的性能,确保尽可能尊重所有规则,并特别改善静态资源的服务。它将为您缩小,优化和压缩CSS和JavaScript,通过删除未使用的元数据来降低图像大小,设置到有效的标题以更好地利用浏览器缓存等等。最重要的是 - 它不需要您的架构更改。只需将其插入您的服务器即可。要安装模块,请按照以下说明进行操作 - 您需要从nginx的来源构建,但这仅是一对工作的命令。要正确介绍PagesPeed,请参见以下视频 - 到目前为止,它已经有点旧了,但仍然是一个非常宝贵的资源:
>使用spdy
在类似于PageSpeed的努力中,Google还领导了SPDY的发展。 MOD_SPDY是另一个旨在更快地为您的网站服务的Apache模块。安装它并不像人们喜欢的那样简单,并且还需要浏览器支持,但这一天看起来看起来更好。 SPDY实际上是一种协议(很像HTTP是一个协议),它可以在能够的情况下拦截并替换HTTP请求,从而更快地为站点服务。有关更多信息,或者更好的是,此新手友好的细分,请参阅此高级概述。虽然使用SPDY可能会冒险,因为我们仍在等待更广泛的采用,但到目前为止,收益似乎超过了风险。压缩
> html中的DIV和跨度标签之间有什么区别? DIV标签是一个块级元素,用于较大的代码块,而跨度标签是一个内联元素,用于一条线内的一小部分HTML。它们之间的主要区别是它们如何影响网页的布局。 Div元素创建了一条新线路并占用全部宽度,而SPAN元素不会创建新线路,并且仅在必要时占用尽可能多的宽度。
>
>
>我如何衡量网站的性能?CSS以多种方式影响网站性能。大型,复杂的CSS文件可以放慢您的网站,因此保持CSS清洁且组织良好很重要。您还应该避免使用过多的CSS动画,因为它们可能引起性能问题。此外,您应该使用CSS Sprites将多个图像合并为一张图像,减少HTTP请求的数量并提高网站的加载速度。
>>如何为移动设备优化我的网站?
以上是网络性能技巧 - 超越基础知识的详细内容。更多信息请关注PHP中文网其他相关文章!