关于大型网站技术演进的思考(十三)--网站静态化处理—CSI(5)

news/2024/5/10 11:37:25/文章来源:https://blog.csdn.net/weixin_34132768/article/details/89783427

讲完了SSI,ESI,下面就要讲讲CSI了 ,CSI是浏览器端的动静整合方案,当我文章发表后有朋友就问我,CSI技术是不是就是通过ajax来加载数据啊,我当时的回答只是说你的理解有点片面,那么到底什么是CSI技术了?这个其实要和动静资源整合的角度来定义。


  CSI技术其实是在页面进行动静分离后,将页面加载分为两个步骤完成,第一步是加载静态资源,静态资源加载完毕后进行第二步骤加载动态资源。不过这个定义还是表述的不全面,不全面的地方就是我们要强调动静分离的目的,我们把页面里的动静资源拆分出来是为了将静态资源做有效的缓存,这个静态资源可能是在静态web容器上,也有可能是在CDN上,也有可能是在浏览器上,不管静态资源是如何缓存的,我们的目的都是为了让静态资源加载的速度更快,如果我们没有让静态资源加载变得高效,就算我们使用了CSI的形式来设计页面,其实也没有发挥CSI的优点,反倒还会一不小心引入CSI的缺点。那什么是CSI的缺点呢?具体如下:


  CSI的缺点一:CSI不利于页面的SEO即搜索引擎优化。搜索引擎的网络爬虫一般是根据url访问页面,获取页面的内容后去掉没用的信息例如:css样式,js脚本,然后分析剩下的文本内容,因此假如页面的一部分内容需要进行异步加载,那么这个加载控制肯定是由javascript代码来完成的,因此网络爬虫爬下来的页面里异步加载的操作是没法执行的(听说有些高级的爬虫可以执行异步的操作,抓取异步的内容,即便有这个技术,大部分主流的爬虫还是会忽略掉javascript代码的也会忽略异步加载的内容的),这就会导致爬虫爬的页面里有部分信息丢失了,所以说CSI对SEO不太友好。不过这个缺点我们仔细分析下,可能并不会是那么严重,前面我们谈论了很多静态分离的策略,如果我们动静分离策略做的好,那么动态资源基本都是不能被缓存的内容,经常发生变化的内容,这些变化的内容本来就不需要被网络爬虫爬到,就算真的被爬到,搜索引擎有个查询结果指向了这个页面,我们点开这个页面结果也是在页面找不到被搜索的关键字,这种情形我相信很多朋友在使用搜索引擎时候都会碰到过。不过我想如果开发人员没有正确使用CSI,那么这块他们可能也不会处理的特别好,因此这个缺点还是很容易被引入的。


  CSI的缺点二:我们那么费时费力想让自己的网站静态化,目的就是想让页面加载更快点,我们简简单单把页面加载分成了两个步骤进行,那么这么做就真的快吗?这可不一定啊,其实动静分离的做法和我上一个系列里讲到的数据库读写分离有类似之处,数据库读写分离我们是通过拆分原表的读写之间的关联关系,从而达到解决读的瓶颈问题,而网页的动静分离是因为静态资源很容易被优化,所以我们要拆分动静资源。所以当我们对资源进行了动静分离,但是又没有优化静态资源,这个一看就知道我们缺少一个加速页面加载速度的操作,那么真的能让页面加载快点,还真的很难说了,而且异步加载需要执行javascript代码才行,但是静态资源加载时候很容易造成javascript脚本被阻塞,如果阻塞的脚本正好是异步加载的部分,结果只会是比以前加载的更慢了。


  由此可见,我在前面讲到的SSI和ESI技术对于我们在浏览器端发挥CSI技术优点是非常有必要的,SSI和ESI做好了能让动静分离出的静态资源加载的更加高效,这也就让CSI操作的第一个步骤变得高效,第一个步骤处理好了我们只要在页面控制好脚本阻塞对异步加载的影响,那么我们就可以达到提升整个页面加载效率的目的了。此外我觉得CSI对SEO有重大影响是个伪命题,假如使用CSI造成了SEO效果不佳,那么肯定是我们CSI方案设计的不到位。


  有人认为CSI还会有个缺点,不过笔者我并不认为这是一个缺点,这其实是一个设计问题,好与坏是根据个人的操作习惯所决定的。这个别人认为的缺点是什么呢?它就是使用CSI技术时候,虽然页面很快的被加载出来了,但是动态内容那部分可能会显示一个正在加载的提示,那么这就导致页面用户友好性降低,其实这种同步和异步加载混搭操作实在太常见了,几乎所有大型门户网站,电商网站还有一大堆数不尽的网站都是采用同步和异步混搭的加载方式,假如这些网站不这么做,我相信这些网站例如首页加载一定会慢的让人吐血,因为它们很多网页里面内容实在太多,图片也都有点爆棚了,所以它们不得不使用同步和异步混搭的加载方式,甚至很多静态资源例如图片,flash这些东西也会采取异步加载方式。说到这里,估计有人还是觉得不服气,他就是不喜欢页面加载时候还要出现个正在加载提示,但是网页里又非常需要CSI带来的好处,那么我们该如何解决这个问题呢?这个问题很好解决,首先愿意使用CSI技术也就说明用户还是很愿意使用异步的加载技术的,不喜欢则是正在加载的提示,这说明用户想要在做同步加载操作时候不要掺杂异步操作,虽然现在ajax技术大行其道,但是ajax技术有个同步加载是没有办法解决的,那就是我们在浏览器地址栏里输入网站url请求页面 ,所以面对上面的需求我们只要保证这种同步操作只是一个纯粹的同步操作而不要掺杂异步加载即可,这个方案还是很好实施的,这里我就不再累述了。


  动静分离后我们会把静态资源进行缓存,前面文章里讲了一大堆都是在讲服务端的静态资源缓存,现在讲到了CSI已经到了浏览器端,那么我们就得谈谈浏览器的缓存操作。页面的缓存操作就是使用http的expires和cache-control,我们首先看看下面的写法:

     

<meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">


这是我现在做的java的web项目里,jsp和vm文件都会使用的meta配置,它的目的就是让页面不要被浏览器缓存,但是如果使用CSI技术,同时动静分离做的很好,那么在页面头部其实我们可以不再这么写了,我们可以让页面在合理的时间范围内被浏览器缓存,如果该页面做了缓存操作,那么以后我们再访问该页面,网页的加载效率就会变得更高了。


  这里还有个问题,在雅虎优化网站的建议里,为了充分利用网页并行加载的特点,我们往往会把图片,外部的js和css文件放置在单独的静态web容器或CDN上,那么这些文件往往也是可以被浏览器缓存,这个我们又如何设置才能让浏览器知道要缓存它们呢?这里我们以apache为例,为了让静态资源被浏览器缓存,apache需要使用mod_expires模块,然后在apache的配置文件里添加如下配置:


 

<FilesMatch "\.(gif|jpg|png|js|css">ExpiresDefault "access plus 10 years"</FilesMatch>

那么浏览器访问此apache上的静态资源后,浏览器就会把图片和该服务器上的js和css文件缓存在浏览器里。


  我们看看被缓存的静态资源是如何被使用的,如下图所示:

         132305488866432.png


   当http的响应码是304的时候,那么浏览器就会从缓存里读取资源了,这里有的朋友可能会感到奇怪为什么缓存的资源还要发送个http请求了?理解这个我们就要了解下缓存的机制,缓存的含义是临时保存某些东西,既然是临时保存,那么就应该有个保存的有效期,我们定义缓存的方式是通过http完成的,那么按道理检查缓存是否过期也应该是http来决定的,因此每次使用缓存时候我们要发个请求到服务端,服务端会检查下资源是否过期了,如果没有过期,服务端返回个304的响应码,304的返回响应是没有http报文体的,所以这个http请求的返回数据是非常小的,因此这个http效率还是很高的,如果服务端发现资源过期了那么服务端就会把新资源返回给浏览器了,其实这个检测资源是否过期的请求有个专有名词叫做条件Get请求。至于服务端是如何完成检查操作,本系列在讲web前端优化时候会详细阐述,这里就不深入了。看到这里估计有朋友又有疑问了,为什么缓存是否过期不能在浏览器端来做了?这主要是浏览器做这个检查非常不准,因为用户的电脑时钟不一定准确,或者用户电脑时钟和服务端不一致,如果再加上时区那么就更加麻烦了,所以缓存失效最好是在服务端进行,这样缓存的有效期的准确性才能得到保证。html5的出现,浏览器缓存的能力大大增强了,不过使用html5技术进行缓存我还没有深入研究过,所以这里也不讲述了,有兴趣的朋友可以自己研究下。


  好了,CSI主题内容讲完了,讲到CSI技术和浏览器我们就可以开始本系列另一个重要内容前后端分离了,这将是我下篇的主题,我在自己博客里多次讲到前后端分离,马上又要再次讲了,这次讲是我这么长时间做前后端分离研究的大总结了。


文章出自:http://www.cnblogs.com/sharpxiajun/p/4291003.html





      本文转自027ryan  51CTO博客,原文链接:http://blog.51cto.com/ucode/1743274,如需转载请自行联系原作者







本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_740894.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

360极速浏览器打不开国内网站的一种解决方法

360极速浏览器打不开国内网站的一种解决方法一、问题描述二、解决办法一、问题描述 点击东北大学官方网站&#xff0c;显示您访问的网页出错了。 二、解决办法 点击右上角的三横线的图标——代理服务器——不使用代理服务器——重新打开浏览器。

小程序-下载bing网站壁纸并设为桌面

目的&#xff1a;下载cn.bing.com或http://www.bing.com/的背景图片&#xff0c;并将其设为壁纸 思路&#xff1a;根据用户输入的地址&#xff0c;首先下载对应网址的页面并解析其中的图片地址。接着下载图片&#xff0c;调用系统api将其设为壁纸。其中的下载都使用socket来实现…

LNMP网站架构方案分析

2019独角兽企业重金招聘Python工程师标准>>> LNMP&#xff08;Linux-Nginx-MySQL-PHP&#xff09;网站架构是目前国际流行的Web框架&#xff0c;该框架包括&#xff1a;Linux操作系统&#xff0c;Nginx网络服务器&#xff0c;MySQL数据库&#xff0c;PHP编程语言&am…

php网站留言,php实现网站留言板功能

php实现网站留言板功能发布于 2016-01-14 09:57:49 | 1045 次阅读 | 评论: 10 | 来源: 网友投递PHP开源脚本语言PHP(外文名: Hypertext Preprocessor&#xff0c;中文名&#xff1a;“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点&#xff0c;…

拍卖网站开发新风潮?阿里的拍卖平台正在这么做

如今&#xff0c;线上拍卖成为新的风潮、司法拍卖火爆&#xff0c;网络拍卖将成为下一个电商市场&#xff0c;拍卖网站开发新风潮。 学霸的高分笔记值多少钱?1897年的可口可乐运货单你感兴趣吗?井柏然写的三行情书怎么卖?一个大学生把他的脑门当作广告位&#xff0c;你会出价…

html链接防抓取了,为防止别人轻易抓取自己网站页面,对自己网站JS进行16进制加密...

网站开发人员开发好网页在网上发布后&#xff0c;经常遇到自己辛苦开发好的静态页面被别人轻易的copy去。这时候就需要我们对网站采取一些加密措施&#xff0c;其中有一个方式&#xff1a;加密js文件&#xff01;对静态页面(html)加载的js引用文件进行加密&#xff0c;一般加密…

40水平滚动网站推荐-视差背景效果的运用(下篇)

使用视差滚动效果做网站的第一个感觉是设计网站的这个工程师水平不一般&#xff0c;做出来的网站是那么的大气&#xff0c;吸引人&#xff0c;每次我遇到这样的网站我都会从头到尾挨个点击一遍&#xff0c;他们的每个功能&#xff0c;每个细节都是那么的完美&#xff0c;往往我…

uniapp中qrcode生成二维码后传的参数不见了_【网站】你们要的二维码生成工具!...

南郡丨二维码工具将文章内容、网址链接、图片、文件等生成二维码以方便用户直接扫码查阅&#xff0c;也是我们必须掌握的技能&#xff0c;关于二维码生成工具&#xff0c;大家可以试试下面这几款工具。草料二维码丨https://cli.im/草料是大家最为熟知的二维码生成器&#xff0c…

mongoose 批量修改字段_WP菜鸟建站28:wordpress网站改域名后,批量修改图片地址...

一般情况下&#xff0c;对于一个wordpress网站的站长来说&#xff0c;不会轻易地更换自己网站的域名。因为&#xff0c;域名就相当于一个wordpress网站的身份证号&#xff0c;用户可以通过这个域名&#xff0c;就可以对号入座地找到你的网站。再一个原因&#xff0c;如果更换域…

网站优化怎样的外链能轻松收录,网站外链优化攻略

有些事情&#xff0c;让你感到很无奈&#xff0c;网站外链优化也是如此&#xff0c;往往那些很容易发布网站外链的地方&#xff0c;价值不大&#xff0c;而不容易发布外链的地方&#xff0c;一旦发布上去了&#xff0c;效果胜过几十条甚至更多的外链&#xff0c;而且可以轻松让…

Java生成sitemap网站地图

访问我的博客 sitemap 是什么&#xff1f;对应没有接触过网站 SEO 的同学可能不知道&#xff0c;这里引用一下百度站长的一段解释。 Sitemap&#xff08;即站点地图&#xff09;就是您网站上各网页的列表。创建并提交Sitemap有助于百度发现并了解您网站上的所有网页。您还可以使…

解决ASP.NET网站发布问题

目录 前言 开始 aspx.cs文件放到单独的类库项目 一个可选择勾选页面的发布工具&#xff1a;LimusicAddin 前言 Asp.net 发布分为&#xff1a;动态编译和预编译。预编译又分为&#xff1a;In Place Pre-compilation 和 Pre-compilation for Deployment。关于asp.net编译&#xf…

弊端重重的传统影楼,优兔家摄影网站赋予新生机

关键词&#xff1a;网站建设&#xff0c;H5响应式网站&#xff0c;摄影网站建设 关于优兔家 U2&#xff08;优兔家&#xff09;新派视觉摄影&#xff0c;由资深广告创意人主理&#xff0c;是一个善于挖掘个人美态的摄影团体&#xff0c;为用户提供状容造型、专业摄影、后期润饰…

html amp css自学网站,HTMLamp;CSS——网站注册页面,

HTML&CSS——网站注册页面&#xff0c;1、表单标签所有需要提交到服务器端的表单项必须使用括起来&#xff01;form 标签属性&#xff1a; action,整个表单提交的位置(可以是一个页面&#xff0c;也可以是一个后台 java 代码)method,表单提交的方式(get/post/delete……等…

HTTrack - 克隆任意网站

HTTrack可以克隆指定网站&#xff0d;把整个网站下载到本地。 可以用在离线浏览上&#xff0c;也可以用来收集信息&#xff08;甚至有网站使用隐藏的密码文件&#xff09;。 一些仿真度极高的伪网站&#xff08;为了骗取用户密码&#xff09;&#xff0c;也是使用类似工具做的。…

第13节 IIS之WEB服务器—用于发布网站

IIS之WEB网站发布服务器0 引言1 WEB服务器相关概念2 部署WEB服务器—以win2003为例2.1 安装WEB服务器软件2.2 发布静态网站2.3 发布动态网站3 一台服务器发布多个web网站—以win2003为例3.1 方法1&#xff1a;增加多个IP地址3.2 方法2&#xff1a;设置不同端口号3.3 方法3&…

iframe嵌入其他网站,如何自适应高度

终于有一周时间&#xff0c;工作不那么忙了&#xff0c;腾出手来总结下工作过程中学到的知识。 每天遇到新问题&#xff0c;解决新问题&#xff0c;但是却很少有时间去仔细研究下&#xff0c;或者总结下。攒的多了&#xff0c;就得从头捋一遍。 说下iframe自适应高度&#xff1…

【Linux系统】第13节 CentOS系统中采用Apache发布网站以及访问控制配置详解

目录1 CentOS系统中Apache的安装1.1 安装前检查1.2 配置IP地址1.3 安装及检查2 主页建立与编辑3 Apache主配置文件分析4 访问控制设定4.1 客户机地址限制4.1.1 客户机地址限制原理4.1.2 客户机地址限制示例14.1.3 客户机地址限制示例24.2 用户授权限制5 归纳参考文章1 CentOS系…

【(SQL+HTML+PHP)综合】一个简单论坛网站的综合开发案例(具有用户注册、登录、注销、修改信息、留言等功能)

目录1 实验环境2 网站页面功能规划2.1 论坛首页2.2 个人中心2.3 实现留言功能2.4 数据库及连接数据库3 实验阶段一&#xff1a;实现注册、登录、注销和更新头像等功能3.1 数据库3.2 论坛首页./index.php3.3 个人中心注册页面./member/register.php3.4 接收来自注册页面的表单数…

【蚁剑工具-01】网站管理工具之中国蚁剑安装过程详解以及应用实例

目录1 中国蚁剑安装及设置1.1 下载1.2 安装1.3 相关设置2 中国蚁剑应用实例2.1 操作环境2.2 具体步骤3 总结参考文章任何人不得将其用于非法用途以及盈利等目的&#xff0c;也禁止未经允许私自修改打包进行发布&#xff0c;否则后果自行承担并将追究其相关责任&#xff01;中国…