很多朋友都认为关于URL优化方面的工作是后端工程师做的,前端方面注重结构方面的优化就可以了。其实不然,对于请求及DNS请求等等诸多方面,前端工程师也应该在自己能做到的方面给予优化。
下面我就说说我对于URL在前端优化方面的理解,希望大家指正。
首先,第一点,比较“吝啬”,就是使用“c”、“j”、“i”文件夹分别代替我们经常用的“css”、“javascript”、“images” 文件夹。如果没有记错的话,这个方法是Zeldman在《网站重构》第一版的时候提出来的(如果记错了,欢迎大家指正),我是比较赞成这个的。当然很多人会说,有这个必要吗?我个人觉得有,虽然这样做或许不会对页面精简带来太大的效果,但是并不会带来任何坏处。
第二点,对于链接到像http://www.example.com/dir/这样的URL时候,记得在最后加上“/”,因为如果你的网站包含目录并使用了自动索引,不加结尾的斜线的话会页面会多一次重定向。(p.s:对于链接到主机名的链接可以不必加)
第三点,就是上面已经提到的重定向问题。这应该是前端最应该重视的基于URL的优化问题,大家应该都有亲身体验重定向时的等待的不愉悦,尤其是第一个请求就是重定向时,用户看到的是一个“漫长”的空白页面过程。所以应该避免滥用重定向,不过很多时候(主要用在跟踪)还是需要用到重定向,当然这也包括服务器的配置方面,不管怎么说,我们还是在我们能做的方面尽量做好吧。
第四点,减少DNS的查找。对与这点,可以主要从增大DNS缓存时间和减少网站内容主机请求数量两点来优化。对于第一点在网站端可以通过DNS的 TTL及HTTP的Keep-Alive来设置(虽然这不是HTTP1.1中必需的,但是很多浏览器和服务器都包含它)。当然你在配置中得考虑自己网站的实际情况,确保你的内容和ip不会在你设置的时间内失效。在主机名数量上,减少唯一主机名的数量会减少页面并行下载的数量,基于下面要说的原因,Steve Souders建议网站数据内容分别放在2-3个主机名下是最优选择。
最后一点,将数据内容并行下载。在HTTP1.1规范下,建议浏览器从每个主机名并行的下载两个数据包内容,并且很多浏览器默认都是这样做的(可以打开YSlow对照页面在firefox下的结果),如果你的页面包含较多的图片等数据内容,将其分别放在两个主机名下,整体的下载时间将会有明显的缩短。但是基于上面一点的原因,不要将内容放在太多的主机下,至于实际几个,可以通过自己的页面情况考虑。
当然,基于URL的优化,在服务器方面的配置(包括CDN,路由等方面)效果明显,但是我们前端在做好其他如页面结构、页面压缩、HTTP请求数量等方面的优化下,进行上述的URL使用优化,肯定能使你的页面有更好的呈现。
本文很多观点来自Steve Souders的《高性能网站建设指南》,本文内容比较偏,欢迎大家拍砖。现在像google的分布式还有热门的云计算方面也是URL优化方面极具讨论价值的话题,欢迎大家讨论指教。
分享到:
相关推荐
在本文中,我们将探讨H5前端性能测试的实践方法,主要关注H5页面加载过程、白屏问题的分析以及解决卡慢问题的策略。H5因其灵活性、轻量化和跨平台特性,在各种业务场景中广泛应用,但其性能表现相较于原生应用常常略...
标题中提到的“webpack4 图片处理汇总”意指本文将探讨在使用webpack4这一流行的前端模块打包工具时,如何对项目中的图片资源进行有效的处理和优化。Webpack 4是webpack系列的最新稳定版本,其不仅提升了打包性能,...
在现代Web应用开发中,Vue.js 是一个非常流行的前端框架,尤其在构建单页应用程序(SPA)时。Vue CLI 是官方提供的脚手架工具,它简化了项目的初始化和配置过程。在本文中,我们将深入探讨如何针对Vue SPA的首屏加载...
### 浅谈移动端页面无刷新跳转问题的解决方案 #### 一、背景及问题提出 在当前移动互联网时代,移动端应用程序越来越受到用户的青睐。然而,传统多页面应用程序在页面跳转过程中存在诸多问题,如页面刷新导致的...
要快速集成Swagger到SpringBoot项目中,可以在`pom.xml`文件中添加Swagger的starter依赖,如`swagger-spring-boot-starter`,并配置`application.yml`文件,指定API的基本信息、扫描的包路径以及需要排除的URL。...
Webpack 是前端开发中广泛使用的模块打包工具,尤其在处理静态资源如图片方面有着重要的作用。在提高前端项目体验中,优化静态资源是关键,因为浏览器对同一域名的并发请求有限制,过多大体积的图片可能导致页面加载...
在Vue.js应用中,为了优化用户体验,特别是在...要在Vue项目中使用`vue-lazyload`,首先需要通过npm进行安装: ```bash npm install vue-lazyload --save-dev ``` 如果你希望使用CDN,可以引用以下链接: ```html ...
然而,对于静态资源(如图片、字体文件等)的引用,通常不建议在`alias`中设置,而是直接在HTML模板或CSS中使用相对路径,或者利用Webpack的`file-loader`或`url-loader`处理。这是因为静态资源的处理方式与...
通过本文的介绍,初学者可以建立起Webpack的基本概念,并且能够在项目中实际使用Webpack进行资源的打包、优化和构建。Webpack是一个非常强大和灵活的工具,随着学习的深入,开发者可以进一步探索其高级功能,以满足...
在Vue项目中,使用`vue-quill-editor`作为富文本编辑器时,可能会遇到一系列问题。本文将探讨其中的关键挑战,以及如何通过引入Element UI组件和自定义处理方法来优化图片上传功能。 首先,`vue-quill-editor`默认...
浅谈React前后端同构渲染 React 前后端同构渲染是指在服务端和客户端使用同一个 React 组件库来渲染页面,实现服务器端渲染(SSR)和客户端渲染的无缝整合。这种技术可以提高页面的加载速度、SEO 和可维护性。 ...
本文将探讨如何在不使用SSR的情况下,通过预填充内容的方式来优化Vue单页面的SEO。 首先,我们需要理解SEO的基本原则:提供清晰、完整的元信息(如`<meta>`标签中的`title`、`description`和`keywords`)以及可被...
在移动应用开发中,MUI框架是一个常用的前端框架,它基于HTML5技术,提供了一套接近原生App体验的UI组件和交互设计。在实际应用中,开发者常常需要加载外部网页或从服务器获取数据,以实现更丰富的功能。本文将详细...
在本文中,我们将深入探讨如何在使用layer库的iframe弹窗中为内部的HTML标签赋值,这是一个在前端开发中常见的需求,特别是在处理表单编辑或数据查看时。layer是一款非常流行的JavaScript弹层组件,它提供了丰富的弹...
在前端开发中,缓存是一种优化页面加载速度的重要手段,然而它也会引发一系列问题,特别是在微信页面中。本文主要探讨的是微信页面入口文件被缓存的解决方案,这在微信浏览器中是一个尤为突出的问题。 首先,我们来...
在构建单页应用(SPA)时,页面级缓存是优化用户体验的关键,尤其是在页面切换时保持数据状态和避免不必要的重新渲染。Vue 提供了一个内置组件 `keep-alive`,用于实现组件的缓存功能,但有时它并不能满足所有需求,...
然而,SPA在搜索引擎优化(SEO)和首屏加载速度上存在一些挑战。搜索引擎爬虫难以抓取通过JavaScript动态生成的内容,这会导致网站难以在搜索引擎中被搜索到,从而影响SEO效果。此外,大型webApp在打包后生成的JS...