两种Web页面局部刷新技术的简单较量

简介:
【摘要】本文针对两种Web页面局部刷新技术—IFRAME与XmlHttpRequest,作正反面比较;并给出各自的应用示例。 
本文试图通过一个简单的实现文章展示的Web页面布局的例子探讨当前两种流行的Web页面局部刷新技术—IFRAME与XmlHttpRequest。

    当前,许多设计良好的web站点往往都包含大量的与实际内容相联系的可导航信息。而用于实现导航的HTML标记往往极大地影响你的网站的搜索引擎评价指 数,而且也极大地影响访问者页面下载体验感。基于本文中的实现思路,将会有助于你创建基于AJAX技术但又尽可能少地受搜索引擎影响的web页面。 

一、 初步设计Web页面 
    根据内容与导航相分离的原则,我们的第一步应该是,先在web页面上创建一些将插入可导航元素的占位符。对于每一个可导航元素的连续区域,必须创建一个具 有唯一id的独立DIV元素;以便将来方便地在JavaScript代码中标识它。为了防止过度抖动现象,在创作页面期间,目录上方或右边的DIV元素的 尺寸应该调整到非常接近你的可导航元素的实际大小;这样,当你使用希望的HTML代码来代替它们时内容就不会移动位置。为此,一种最巧妙的方法是把一个空 的适当大小的DIV元素插入到该占位符处。 
很简单。你仅需要从可导航DIV元素中删除内容并且插入一个空框,页眉以后将会出现在这里。下面是一段示例代码: 

<div id="header"> 
<div style="height: 100px; width: 100%"></div> 
</div> 
<div id="contentArticle"> 
<div id="firstCol"> 
文章内容放在此处…… 
</div> 
<div id="secondCol" ></div> 
</div> 
<div id="footer"></div> 

    【注意】如果你的web页面使用表格来实现所希望的页面布局,那么请不要把表格单元格重用作占位符;而把DIV元素放到表格单元格内比较好一些。 

    已经被从web页面中删除的可导航的元素必须被重新创建为独立的页面。你应该使用静态HTML文件来表达静态内容(这将允许缓冲内容,不管你使用什么样的 web服务器)和在加载它们的web页面上创建显示基于动态元素的服务器端脚本。典型情况下,每一个web页面都应该有唯一一个文章标识符(例如可以使用 URL中的“p=”参数);因此,你需要创建一个能够接受文章标识符并创建右边的栏目的服务器端脚本。在大多数情况中,你可以重用创建嵌入的可导航元素的 服务器端代码。 
在重新设计这些web页面后,接下来,你就可以实现“AJAX”编程部分了。下面,我们将分别讨论基于嵌入式框架(IFRAME元素)和XmlHttpRequest对象两种方案实现这一过程的思路,并探讨其各自的优劣点。
现在,细心的读者应该感到疑惑,为什么这么复杂?在IFRAME元素中加载导航元素不是更简单一些吗?事实证明,对于此方法还要加一些防止误解的说明为好: 
• IFRAME具有固定的高度和宽度。如果内容彼此超出,则内容将被剪掉或者IFRAME要加上滚动条。然而,被复制到一个在父页面中的DIV元素中的HTML标记其大小却总是保持自动调整大小。 
• 当在一个IFRAME中时,在导航内容中的链接(一个元素)将装载IFRAME中的新页面,除非你把target="_parent"添加到每一个链接之后。 
• 依附到导航元素的JavaScript事件处理器将在IFRAME的上下文中工作(如果还保留这个上下文的话)。如果你把导航内容移动主页面上,那么事件处理器能够存取在主页面中定义的函数和变量。 
【另注】IFRAME极大地影响到其所开发的网站的搜索引擎优化问题。如今,大多数人的观点是尽可能不要在以推广为主要目标的网站开发中使用此技术。本人也持有同样观点。因此,这种方案宜慎重选用为好。 
    在此,回调函数contentLoaded首先检查XmlHttpRequest对象是否已经准备好(第一个if语句),并判断其完成状态(如果请求已完 成的话)。如果一切顺利,则从响应中提取HTML标记。接下来的编码即是从服务器返回的响应信息中提取我们所关心的内容。当然,提取HTML代码(除非你 使用XHTML,这种情况下,你可以使用新式的XMLDOM接口)的最容易的方法是,使用字符串处理函数来查找<body>和< /body>标志之间的文本。 

    与前面描述的基于IFRAME的方法相比,使用XmlHttpRequest对象具有下列优点: 
    • 代码更利索,并且不依赖于页面的上下文切换。 
    • XmlHttpRequest对象能够为我们提供检测和处理错误(通过它的readyState和status属性)功能。而使用IFRAME加载内容时,如果出现错误,则只能显示非常粗略的错误提示,这主要是因为这种技术缺乏对回调机制的支持。 
• 开发人员既能够实现内容元素的平行加载(如在本节中所描述的),也可以以顺序化方式加载页面内容以达到最为有效地利用带宽。 

    【另注】使用AJAX技术开发后的网站是否也不利于搜索引擎的优化(或支持)?对此观点,在这种技术刚刚推出时就被争论不休,以至于到现在仍无定论。本人 建议,如何你的网站以早期推广为主,则基于各种AJAX技术的内容宜少用为好。当然,如果你的网站已经发展相对成熟(推广相对成功;此时,搜索引擎自然会 找上门来),则适当利用AJAX技术自然会极大地提高用户体验感。 

四、 小结 
    在本文中,我们强调基于web页面内容与包围该内容的可导航元素分离开来的观点来构建网页。因为,这种分离将导致更为集中地描述搜索引擎要搜索的页面内 容,而且也有助于减少用户使用低带宽存取的加载时间(因为我们是在可导航元素被下载之前把实际内容显示给用户的)。 

    接下来,我们通过示例代码片断简要讨论了使用嵌入式框架(IFRAME)与使用新式的XmlHttpRequest对象两种方案来实现可导航元素的延迟装载。显然,各存在其优缺点;因此,在实际开发网站的过程中,还宜视具体情况来定夺。 















本文转自朱先忠老师51CTO博客,原文链接:http://blog.51cto.com/zhuxianzhong/59892 ,如需转载请自行联系原作者



相关文章
|
3天前
|
前端开发 搜索推荐 安全
AJAX和CSR(客户端渲染)是Web开发中常用的两种技术
【5月更文挑战第8天】AJAX提升用户体验,减轻服务器压力,但对搜索引擎不友好且增加开发复杂度,易引发安全问题。CSR提供快速响应和交互性,改善用户体验,但首屏加载慢,搜索引擎支持不足,同样面临安全挑战。两者各有适用场景,需按项目需求选择。
9 0
|
8天前
|
存储 前端开发 安全
13:会话跟踪技术Session的深度应用与实践-Java Web
13:会话跟踪技术Session的深度应用与实践-Java Web
23 3
|
8天前
|
存储 前端开发 搜索推荐
12:会话跟踪技术Cookie的深度应用与实践-Java Web
12:会话跟踪技术Cookie的深度应用与实践-Java Web
22 4
|
10天前
|
缓存 移动开发 前端开发
【专栏:HTML与CSS前端技术趋势篇】HTML与CSS在PWA(Progressive Web Apps)中的应用
【4月更文挑战第30天】PWA(Progressive Web Apps)结合现代Web技术,提供接近原生应用的体验。HTML在PWA中构建页面结构和内容,响应式设计、语义化标签、Manifest文件和离线页面的创建都离不开HTML。CSS则用于定制主题样式、实现动画效果、响应式布局和管理字体图标。两者协同工作,保证PWA在不同设备和网络环境下的快速、可靠和一致性体验。随着前端技术进步,HTML与CSS在PWA中的应用将更广泛。
|
10天前
|
前端开发 JavaScript UED
【专栏:HTML 与 CSS 前端技术趋势篇】Web 性能优化:CSS 与 HTML 的未来趋势
【4月更文挑战第30天】本文探讨了CSS和HTML在Web性能优化中的关键作用,包括样式表压缩、选择器优化、DOM操作减少等策略。随着未来趋势发展,CSS模块系统、自定义属性和响应式设计将得到强化,HTML新特性也将支持复杂组件构建。同时,应对浏览器兼容性、代码复杂度和性能功能平衡的挑战是优化过程中的重要任务。通过案例分析和持续创新,我们可以提升Web应用性能,创造更好的用户体验。
|
10天前
|
前端开发 JavaScript 搜索推荐
【专栏:HTML 与 CSS 前端技术趋势篇】HTML 与 CSS 在 Web 组件化中的应用
【4月更文挑战第30天】本文探讨了HTML和CSS在Web组件化中的应用及其在前端趋势中的重要性。组件化提高了代码复用、维护性和扩展性。HTML提供组件结构,语义化标签增进可读性,支持用户交互;CSS实现样式封装、布局控制和主题定制。案例展示了导航栏、卡片和模态框组件的创建。响应式设计、动态样式、CSS预处理器和Web组件标准等趋势影响HTML/CSS在组件化中的应用。面对兼容性、代码复杂度和性能优化挑战,需采取相应策略。未来,持续发掘HTML和CSS潜力,推动组件化开发创新,提升Web应用体验。
|
10天前
|
开发框架 JavaScript 前端开发
【JavaScript 与 TypeScript 技术专栏】TypeScript 在 Web 开发中的前沿应用
【4月更文挑战第30天】TypeScript在Web开发中日益重要,以其强大的类型系统提升代码质量,支持组件化开发,与React、Vue、Angular等框架良好集成。在大型项目管理中,TypeScript助于代码组织和优化,提高团队协作效率。此外,它提升开发体验,提供智能提示和错误检测。众多成功案例证明其前沿应用,未来将在Web开发领域持续发挥关键作用。
|
10天前
|
移动开发 JavaScript 前端开发
【JavaScript技术专栏】Web Worker在JavaScript中的应用
【4月更文挑战第30天】HTML5的Web Worker API解决了JavaScript单线程性能瓶颈问题,允许在后台线程运行JS代码。本文介绍了Web Worker的基本概念、类型、用法和应用场景,如复杂计算、图像处理和数据同步。通过实例展示了搜索建议、游戏开发和实时数据分析等应用,并提醒注意其无法直接访问DOM、需消息传递通信以及移动端资源管理。Web Worker为前端开发提供了多线程能力,提升了Web应用性能和用户体验。
|
11天前
|
机器学习/深度学习 前端开发 数据可视化
数据分析web可视化神器---streamlit框架,无需懂前端也能搭建出精美的web网站页面
数据分析web可视化神器---streamlit框架,无需懂前端也能搭建出精美的web网站页面
|
11天前
|
缓存 前端开发 JavaScript