页面静态化

页面静态化

吃可爱长大的小学妹 提交于 2019-12-05 23:59:01
1.什么是页面静态化 页面静态化,可以分为伪静态与静态化两种 伪静态是指将动态链接通过一定的手段变成静态文件的链接( restful方式等 ),如userdetail.htm?userid=1234 变成 userdetail/1234.html 静态化 则是在userdetail目录下面生成1234.html文件 2.为什么需要静态化 我们为什么需要将页面静态化,主要考虑到一下方面 利用 seo (search engine optimization ) 搜索引擎优化 提高程序性能,由于不访问容器和对数据库的操作,所以效率比较高 防止 sql 注入攻击 3.怎样在项目中使用页面静态化 1.怎样生成静态文件 我们可以使用模板引擎的方式,根据模板和数据,生成对应的静态文件,常见的java的模板引擎有( freemarker, velocity,beetl )等,目前我们的静态化,采用freemarker 2.模板的存储 静态化模板的存储,通常有两种: 1,保存数据库;2,当成资源文件放在工程目录下。 如果模板规模比较大,且模板的更新比较平凡,建议使用数据库进行保存。 3.如何访问静态文件 单一工程/常规工程 常规工程项目架构如图 常规工程,可以将生成的静态文件放置在某一个文件夹下或者某一个静态文件服务器中,由nginx等代理服务器,反向代理访问相应的资源文件 使用阿里云存储OSS

小蚂蚁学习页面静态化(2)——更新生成纯静态化页面的三种方式

牧云@^-^@ 提交于 2019-12-03 14:08:18
更新生成纯静态化页面的三种方式:1.按照时间间隔更新。2.手动更新。3.定时更新(需要系统配合)。 1. 按照时间间隔更新。 当用户第一次访问这个页面的时候,程序自动判断,该静态文件是否存在,并且该文件是否还在有效时间内,如果该文件未超出了有效时间,用户访问的是已经生成的静态文件。如果超出了有效时间,用户得到的是动态输出的内容,同时重新生成静态文件。稍微 修改一下昨天的代码为例: <?php //首先判断是否有静态文件,并且文件的最新修改时间到现在是否大于20秒 if(is_file('./text.php') && time()-filemtime('./text.php') <= 20){ //条件成立,将已经生成的静态文件输出给用户 include_once('./text.php'); }else{ //条件不成立,重新走数据库,获取数据,分配模板,输出内容 $arr = array( 0=>array('title'=>'这里是第一个标题'), 1=>array('title'=>'这里是第二个标题'), 2=>array('title'=>'这里是第三个标题'), 3=>array('title'=>date('Y-m-d H:i:s')) ); //缓冲区必须要在输出之前开启 ob_start(); //输出模板 include_once('./template

小蚂蚁学习页面静态化(3)——页面静态化中局部动态化案例实现

妖精的绣舞 提交于 2019-12-03 14:08:04
说白了,其实就用到了一个知识点——ajax。在静态化页面中使用ajax动态获取数据库中的数据,写入到静态化页面中相应的位置即可。虽然这些代码在平时的工作中都写烂了,但我还是决定在博客中重新写一遍,不要问我为什么,周日,不!上!班!呵呵呵呵…… 生成静态化页面的脚本 <?php //首先判断是否有静态文件,并且文件的最新修改时间到现在是否大于20秒 if(is_file('./text.php') && time()-filemtime('./text.php') <= 20){ //条件成立,将已经生成的静态文件输出给用户 include_once('./jingtai.php'); }else{ //条件不成立,重新走数据库,获取数据,分配模板,输出内容 $arr = array( 0=>array('title'=>'这里是第一个标题'), 1=>array('title'=>'这里是第二个标题'), 2=>array('title'=>'这里是第三个标题'), 3=>array('title'=>date('Y-m-d H:i:s')) ); //缓冲区必须要在输出之前开启 ob_start(); //输出模板 include_once('./template.php'); //输出内容的同时生成静态文件,注意使用的函数是ob_get_contents(); file_put

PHP页面纯静态化与伪静态化

蹲街弑〆低调 提交于 2019-12-01 01:56:30
在很多地方都看到有PHP整站静态化的东东,怪唬人的。。其实,你会静态化一个页面,那么别说整站了,想静态化多少都可以。所以关键是,首先要知道怎么静态化一个页面,了解静态化的原理是关键, 这里就说下我个人的理解了。 区别: 纯静态页面: 是指网页文件在服务器的硬盘上以纯html代码文件存放的,默认文件名通常是htm、html、shtml、shtm等,一般情况下是由一个内容管理系统来生成的网站。 伪静态网站: 是指以html或者htm为扩展名的url,在客户端看起来被认为是静态网站,实际上在服务器端采用URL重写技术指向动态程序路径。另外还有的是采用Ajax等JS技术调用服务器端动态内容来显示,虽然网页是静态的,内容却是动态读取的。 优缺点: 伪静态其实是动态的或者半动态的网站,动态和静态各有优缺,一般来说静态的性能优势明显,访问量大的网站无不是采用静态化的网站。随着网站的复杂程度增高和用户对交互的需求,一些动态的部分不可以静态化,所以,目前大多数网站或多或少都会有动态的部分。 一、纯静态页面: 首先,需要知道几个函数。 ob_start(); ob_end_clean(); ob_get_contents(); file_put_contents();//这个可以用fopen,fwrite代替 file_exists();等函数。 不知道这些函数的就自己去翻手册,这里就不多讲解了。

freemarker静态化的一个简单示例

依然范特西╮ 提交于 2019-11-30 05:05:05
freemarker静态化关键在于public void process(Object dataModel, Writer out) 方法。 演示环境:springMVC+spring 在spring中注入freemarker配置 <bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPaths" value="/WEB-INF"/> <property name="defaultEncoding" value="UTF-8"/> <property name="freemarkerSettings"> <props> <prop key="template_update_delay">10</prop> <prop key="defaultEncoding">UTF-8</prop> <prop key="url_escaping_charset">UTF-8</prop> <prop key="locale">zh_CN</prop> <prop key="boolean_format">true,false</prop> <prop key="time