马海祥博客是一个专注于分享SEO优化、网站制作、网络营销和运营思维的自媒体博客!
马海祥博客 > 网站制作 > html代码教程 > 如何实现shtml页面的局部缓存

如何实现shtml页面的局部缓存

时间:2014-02-22   文章来源:马海祥博客   访问次数:

平时在web开发中,对于shtml页面,用得最多的SSI指令是include。语法规则如下:

<!–#include virtual=”shtmlCache/header.shtml” –>

这样可提高代码重用性以及可维护性,因此,一般都把公共文件,如头部、尾部、侧边栏、公共的JS等做成一个单独的文件,然后通过include指令包含进来,这样整个站点的头部、尾部、侧边栏、公共JS等,都可以被引入到shtml页面中。后面需求更改,比如产品需要更改站点头部,也只需要更改头部文件,就可以实现全站头部更新。可见通过include指令包含公共文件,可以使shtml页面的维护性和重用性大大增强。

如何实现shtml页面的局部缓存-马海祥博客

1、shtml页面的常规布局

一般来说,对于shtml页面,一个站点,每个页面都会有相同的公共文件,比如页面的头部、尾部、侧边栏目、公共JS等。访问站点下的每一个页面,相同的公共文件,都需要重复从服务器下载。从性能和带宽角度看,重复下载相同内容对性能不利,同时也会占用带宽。因此include进来的公共文件,是否有办法缓存这些文件呢?这就是这里需要重点讨论的内容。假设有这样一个站点,包含有页面头部、侧边栏、页面尾部、公共JS。布局如下图:

如何实现shtml页面的局部缓存-马海祥博客

从上面的网页布局结构可看出,页头、侧边栏、页尾都是属于公共的内容,HTML代码桩如下:

如何实现shtml页面的局部缓存-马海祥博客

2、实现shtml页面缓存的原理

在此,我们需要先判断include的文件是否缓存过,如果缓存过,则不会通过include来包含对应的内容。ssi有判断的指令,语法如下:

<!–#if expr=”test_condition” –>
  < !–#elif expr=”test_condition” –>
  < !–#else –>
  < !–#endif –>

我们可通过SSI指令来判断是否缓存过。同时可利用html5的localStorage来对代码进行保存。

可localStorage只能够通过JS访问,那如何实现localStorage和服务器的ssi指令通信呢?这里利用到一个小技巧,借助cookie作为桥梁,不管是JS还是SSI都是可以访问,因此可利用它来实现SSI和JS之间的通信。换言之,用JS写一个cookie来标识是否已经缓存过相应的内容,然后利用SSI的if语句结合cookie来判断是否需要include对应的内容。

其主要流程图如下:

如何实现shtml页面的局部缓存-马海祥博客

3、示例分析

来看一个简单的demo。以前面页面框架为例,假设header里面有内容是通过JS来输出,侧边栏是全部的HTML,现在要缓存header中的JS和侧边栏的HTML。先来看核心的HTML代码(SSI部分):

如何实现shtml页面的局部缓存-马海祥博客

再看JS写入缓存核心代码:

如何实现shtml页面的局部缓存-马海祥博客

localData.loadfromCache是实现从localStorage读取缓存并渲染出来,这个比较简单,这里就不再单独介绍,大家可以从马海祥博客下载示例代码来查看,或者放在支持ssi的服务器下运行。第一次访问后,将会把对应的公共文件进行缓存,先查看解析后的HTML源代码:

如何实现shtml页面的局部缓存-马海祥博客

从上图可以看出,第一次访问时,因没有缓存过,都是通过include进行直接解析。同时通过cookie和localStorage可查看到相应的值。

cookie信息:

如何实现shtml页面的局部缓存-马海祥博客
(点击查看高清大图)

localStorage信息:

如何实现shtml页面的局部缓存-马海祥博客
(点击查看高清大图)

第二次访问时,再查看解析后的HTML源代码:

如何实现shtml页面的局部缓存-马海祥博客

从上面的2个图对比可以看出,当公共文件没有被缓存时,是通过解析include指令得到相应的代码;当有缓存时,直接通过JS代码从缓存中读取;从而实现shtml文件局部缓存。

4、版本控制

上述示例演示了shtml的局部缓存,那么缓存的版本如何控制呢?可通过cookie来保存版本号,当有缓存的公共文件需要更新时,需要更新ssi if语句中的的版本号,也就是更新下面这行代码中的版本号:

<!–#if expr=”${HTTP_COOKIE} = /(;)?html_aside=01(;)?/”–>

假设上一个版本号是01,现在版本号是02,此时需要把上述代码更改为:

<!–#if expr=”${HTTP_COOKIE} = /(;)?html_aside=02(;)?/”–>

当从SSI中读取到的cookie值和新的版本号不一致时,就不会从缓存中读取了。同理在检测写入缓存时,也需要检测当前cookie的值和当前的版本号是否一致即可,如果不一致,则需要重新写入缓存。

5、安全控制

这里把JS和HTML等代码都缓存到localStorage中去,如果网站中存在XSS漏洞,则攻击者可利用XSS漏洞篡改localStorage保存的数据,这样会扩大网站的危害性,因此马海祥觉得首先要从源头上控制好XSS漏洞,同时也需要对从localStorage中读取出来的数据进行合法性校验,以便降低安全风险。大家可以自行设计一个算法来检测数据的合法性。

马海祥博客点评:

在上面的示例中只是对简单的header中的JS和侧边栏的HTML进行缓存,在实际项目中,需要缓存的JS和HTML代码量要比示例中大得多,因此性能优化的实际效果也会更加明显。因此在实际项目中,可根据公共文件的大小来决定是否需要使用shtml缓存。另外,关于缓存时间,只需要把cookie的有效期设置为N天,则缓存的周期就变成N天了,非常灵活!

本文发布于马海祥博客文章,如想转载,请注明原文网址摘自于http://www.mahaixiang.cn/html/412.html,注明出处;否则,禁止转载;谢谢配合!

相关标签搜索: shtml页面   局部缓存  

上一篇:解析HTML5页面元素的嵌套规则及引起的错误问题
下一篇:如何解决IE6/IE7/IE8浏览器不兼容HTML5新标签的问题

您可能还会对以下这些文章感兴趣!

  • 各大主流浏览器对HTML5的兼容性测试及结果分析

    随着HTML5技术的普及和推广,Web开发社区逐渐开始尝试在RIA(富互联网应用)中使用HTML5,这种实践主要优势在于开发人员能够通过HTML5的各种技术以一种前所未有的统一、简洁、无插件依赖的方式实现炫目、复杂的Web应用,目前来说,HTML5的优越性已经得到了广大开发人员……【查看全文

    阅读:11797关键词: 主流浏览器   HTML5   兼容性   兼容性测试   浏览器   HTML5兼容性   日期:2014-05-30
  • HTML5在网站性能监控方面带来的新特性

    HTML5本身是由W3C推荐出来的,它的开发是通过谷歌、苹果,诺基亚、中国移动等几百家公司一起酝酿的技术,这个技术最大的好处在于它是一个公开的技术。换句话说,每一个公开的标准都可以根据W3C的资料库找寻根源。另一方面,W3C通过的HTML5标准也就意味着每一个浏览器或每一个……【查看全文

    阅读:311关键词: html5   网站性能   日期:2016-10-24
  • 如何解决IE6/IE7/IE8浏览器不兼容HTML5新标签的问题

    HTML5是用于取代1999年所制定的HTML4.01和XHTML1.0标准的HTML(标准通用标记语言下的一个应用)标准版本;现在仍处于发展阶段,但大部分浏览器已经支持某些HTML5技术。HTML5有两大特点:首先,强化了Web网页的表现性能。其次,追加了本地数据库等Web应用的功能。 广义论及HTM……【查看全文

    阅读:18466关键词: IE6   IE7   IE8   浏览器   HTML5标签   HTML5   不兼容   日期:2014-03-13
  • 解析HTML5页面元素的嵌套规则及引起的错误问题

    据统计在2013年内全球有近10亿手机用户使用了支持HTML5浏览器,同时HTML Web开发者数量将达到200万。毫无疑问,HTML5将成为未来5-10年内,移动互联网领域的主宰者。 HTML5之所以能成为近几年的热点话题,是因为HTML5提供了一些新的元素和属性,例如nav(网站导航块)和footer……【查看全文

    阅读:2559关键词: HTML5   HTML5页面   HTML5元素   HTML5问题   日期:2014-01-19
  • HTML5和HTML4的区别:HTML5新标签的用法解释

    HTML5本身是由W3C推荐出来的,HTML5提供了一些新的元素和属性,例如

  • 各大浏览器在Mac和Windows平台对CSS3和HTML5兼容情况查询表

    不知不觉中,支持CSS3和HTML5的浏览器变得越来越多,甚至包括最新版的IE,当然,所谓支持仅仅是部分支持,因为CSS3和HTML5的W3C规范都尚未形成,如果你现在就希望使用CSS3和HTML5创建你的站点,至少要对各个浏览器对这两种新技术的支持情况有一个全面了解,需要指出的是……【查看全文

    阅读:4829关键词: 浏览器   css3   html5   浏览器兼容   日期:2015-01-13
  • HTML5性能优化与分析

    每次跟朋友谈起HTML5,就会有人说可以先用HTML5的方式就是把DOCTYPE先改了,因为目前很多页面都还是用传统的方式,HTML5的方式,本身是兼容IE浏览器的,从IE6到IE10都可以,包括高级浏览器都支持,所以说拥抱HTML5最简单的方式就是把DOCTYPE给改了,从性能角度来说,HTM……【查看全文

    阅读:1634关键词: html5   html5优化   日期:2015-10-30
  • 深入解析HTML5的8大性能

    从性能角度来说,HTML5首先是缩减了HTML文档,使这件事情变得更简单。第一,从用户可读性上说,原先一大堆东西,像初学者第一次看到这些东西是看不懂的,而HTML5的声明方式对用户来说显然更友好一些。第二,文档编码的声明,用HTML5方式的话,就很简单。很多人问HTML5是……【查看全文

    阅读:1263关键词: QQ漂流瓶   QQ漂流瓶群发   HTML5   HTML5性能   日期:2013-05-18
  • 如何规范大型网站的HTML代码

    写Web页面就像我们建设房子一样,地基牢固,房子才不会倒。同样的,我们制作Web页面也是一样的,一个良好的HTML结构是制作一个网站的开始,良好的CSS只存在同样良好的HTML中,所以一个干净的,语义的HTML的优点很多,那么平时制作中,我们又该如何规范大型网站的HTML代……【查看全文

    阅读:6037关键词: 大型网站   代码   html   html代码   日期:2014-06-27
  • 以SEO的角度来分析HTML5与搜索引擎优化的联系

    HTML5是用于取代1999年所制定的 HTML 4.01 和 XHTML 1.0 标准的 HTML 标准版本,现在仍处于发展阶段,但大部分浏览器已经支持某些 HTML5 技术。HTML 5有两大特点:首先,强化了 Web 网页的表现性能。其次,追加了本地数据库等 Web 应用的功能。广义论及HTML5时,实际指……【查看全文

    阅读:1277关键词: HTML5   搜索引擎优化   SEO的角度   SEO   日期:2012-10-16
↓ 点击查看更多 ↓

互联网更多>>

SEO优化 更多>>

企业网站SEO推广能给企业带来哪些好处? 百度搜索用户建议专区上线公告