现实需求:

对于一些不是实时性的页面,数据变化也不是很大的页面,我们可以把该JSP或freemark页面进行静态化。

这样的好处,当我们的服务挂掉了,通过nginx的代理,我们依然可以访问相关的页面。

实现:

通过Shell脚本和linux的crontab的定时任务实现。这里只讲如何实现该脚本。

1.首先我们要学会使用curl脚本:

下载单个文件,默认将输出打印到标准输出中(STDOUT)中

curl http://www.centos.org

通过-o/-O选项保存下载的文件到指定的文件中:

-o:将文件保存为命令行中指定的文件名的文件中

-O:使用URL中默认的文件名保存文件到本地

# 将文件下载到本地并命名为mygettext.html

curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

# 将文件保存到本地并命名为gettext.html

curl -O http://www.gnu.org/software/gettext/manual/gettext.html

例子1:index.sh
具体的脚本如下:
说明:
1.http://127.0.0.1:8082/index?clean=true 是我们本机的一个容器服务提供的JSP页面。
2.status1 ,status2,status3,status 是为了判断服务返回的JSP页面是不是合法的,根据你的JSP页面具体实现。因为一旦JSP页面错误了,返回了错误的页面覆盖了好的页面,静态化就没有任何意义了。
3.cp ,mv 操作是为了备份和覆盖当前的静态页面。
4.sed的简单用法,sed的操作不是必须的。http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html#!/bin/sh
#resin index
#/opt/www/pages/index.tmp
#index pagehttp_code=`curl -o /opt/www/pages/index.tmp -s -w %{http_code} http://127.0.0.1:8082/index?clean=true`;
if [ ${http_code} -eq 200 ]thenstatus1=`cat /opt/www/pages/index.tmp |grep -o "content_item"|wc -l`status2=`cat /opt/www/pages/index.tmp |grep -o "photocdn"|wc -l`status3=`cat /opt/www/pages/index.tmp |grep -o  "focus"|wc -l`status=`cat /opt/www/pages/index.tmp |grep -o "data-columnid"|wc -l`# echo "${status1},${status2},${status3},${status}"if [ ${http_code} -eq 200 ] && [ ${status} -ge 15 ] && [ ${status1} -ge 80 ] && [ ${status2} -ge 80 ] && [ ${status3} -ge 1 ]then date=`date +"%Y-%m-%d-%H-%M"`;cp /opt/www/pages/index.html /opt/www/pages/index.${date};mv /opt/www/pages/index.tmp /opt/www/pages/index.html;#debug_str='<!--'`date +"%Y-%m-%d-%H-%M"`'-->'#sed -i '1a\'${debug_str} /opt/www/pages/index.html elseecho "build index ${status} ${status2} ${status3} fail"fi;
elseecho "build index fail!";
fi;
例子2:静态化相关的子页面,test2.sh
#!/bin/sh#pgc page cids=(70040000 70080000 70060000 70070000 70090000 70120000 70100000 70110000 71010000 71020000 71030000 71060000 71050000 71040000 71070000 71080000 71090000 71100000 71220000 71110000 71120000 71230000 71130000 71140000 71150000 711600
00 71170000 71180000 71200000 71260000 71270000)
i=0
length=${#cids[*]}
while [ $i -lt $length ] ; docid=${cids[$i]}http_code=`curl -o /opt/www/pages/pgc$cid.tmp -s -w %{http_code} http://127.0.0.1:8082/pgc/$cid?clean=true`;status=`cat /opt/www/pages/pgc$cid.tmp |grep -o "data-columnid"|wc -l`if [ ${http_code} -eq 200 ] && [ ${status} -ge 1 ]thendate=`date +"%Y-%m-%d-%H-%M"`;if [ -f /opt/www/pages/pgc$cid.html ]thencp /opt/www/pages/pgc$cid.html /opt/www/pages/pgc$cid.${date};fi;mv /opt/www/pages/pgc$cid.tmp /opt/www/pages/pgc$cid.html;debug_str='<!--'`date +"%Y-%m-%d-%H-%M"`'-->'sed -i '1a\'${debug_str} /opt/www/pages/pgc$cid.html elseecho "build hots$cid fail!"fi;let i++
done
例子3:test3.sh
#!/bin/sh#hots page
#精选: hots128.html    搞笑:hots132.html
#福利:hots133.html    新闻:hots129.html
#娱乐:hots130.html    体育:hots131.html
#一分钟:hots134.html   世界杯:hots177.html
#美剧闹:hots164.html
#son hots249.htmlcids=(128 132 129 130 131 223 224 225 134 164 249)
i=0
length=${#cids[*]}
while [ $i -lt $length ] ; docid=${cids[$i]}http_code=`curl -o /opt/www/pages/hots$cid.tmp -s -w %{http_code} http://127.0.0.1:8082/hots/$cid?clean=true`;if [ ${http_code} -eq 200 ]thendate=`date +"%Y-%m-%d-%H-%M"`;if [ -f /opt/www/pages/hots$cid.html ]thencp /opt/www/pages/hots$cid.html /opt/www/pages/hots$cid.${date};fi;mv /opt/www/pages/hots$cid.tmp /opt/www/pages/hots$cid.html;debug_str='<!--'`date +"%Y-%m-%d-%H-%M"`'-->'sed -i '1a\'${debug_str} /opt/www/pages/hots$cid.html elseecho "build hots$cid fail!"fi;let i++
done
例子4:比如我们网站通用的引用的头部和尾部,要经常改,我们不能每次去修改JSP再去上线吧。这些可以有网站的编辑维护,我们定期下载相关的文件就好了。#!/bin/sh
wget http://tv.baidu.com/s2012/frag/83/20092861_344978361.inc -q -O /opt/www/h5-server/WEB-INF/includes/footer_tmp.jsp >/dev/null 2>&1
cd /opt/www/h5-server/WEB-INF/includes/
iconv -f gb2312 -t UTF-8 footer_tmp.jsp -o footer.jsp
rm -rf footer_tmp.jsp      例子5:如果我们想定时刷新某个接口,或者定时让某个数据刷入缓存。
我们也可以做一个定时任务的脚本,定时执行脚本。
#!/bin/sh
curl -o /tmp/cooperation.tmp http://localhost:8082/cooperation/listall.json?clean=true > /dev/null 2>&1
exit 0
例子8:test8
#!/bin/sh
wget http://tv.baidu.com/s2013/frag/78/120173_381017846.inc -q -O /opt/www/h5-server/WEB-INF/includes/navProms_tmp.jsp >/dev/null 2>&1
cd /opt/www/h5-server/WEB-INF/includes/
iconv -f GBK -t UTF-8 navProms_tmp.jsp -o navProms.jsp
sed -i '1i<%@ page language=\"java\" pageEncoding=\"UTF-8\" contentType=\"text/html;charset=utf-8\"%>' /opt/www/h5-server/WEB-INF/includes/navProms.jsp
#yes|cp -af /opt/www/h5-server/WEB-INF/includes/navProms.jsp /opt/www/HotHtml5/WEB-INF/includes/navProms.jsp
rm -rf navProms_tmp.jsp

转载于:https://blog.51cto.com/hanchaohan/1834727

shell脚本-页面静态化相关推荐

  1. 页面静态化2 --- 使用PHP缓存机制来完成页面静态化(上)(ob_flush和flush函数区别用法)...

    我们可以使用PHP自带的缓存机制来完成页面静态化,但在这里,需要说明一点,仅靠PHP缓存机制并不能完美的解决页面静态化,往往需要和其他页面静态技术(通常是伪静态技术)结合使用 例子: 当访问一个页面时 ...

  2. build vue 静态化_页面静态化

    页面静态化和静态缓存 静态缓存:还需要请求php一些简单的判断,只是一些复杂的逻辑结构不需要再进行php处理.如在缓存数据库中的数据,这样就不用每次都请求数据库.典型的例子就是smarty中有页面静态 ...

  3. 网站提速-页面静态化(2)

    第一篇.页面静态化 页面静态化概念 我们大多数情况下是直接访问php文件,php脚本在服务器端执行并 返回信息,对于一些大型的网站,访问量很大,频繁的动态操作和操作 数据库会加重服务器的负担.在实际开 ...

  4. MySQL建表添加乐观锁字段_Java秒杀系统优化-Redis缓存-分布式session-RabbitMQ异步下单-页面静态化...

    Java秒杀系统优化-Redis缓存-分布式session-RabbitMQ异步下单-页面静态化 项目介绍 基于SpringBoot+Mybatis搭建的秒杀系统,并且针对高并发场景进行了优化,保证线 ...

  5. html静态化和动态页面,web动态页面静态化,伪静态

    动态页面静态化 首选,我们需要了解两个概念, 静态页面 和 动态页面 静态页面 最早的时候,网站内容是通过在主机空间中放置大量的静态网页实现的 静态网页最大的缺点就是每个人看到的一样的. 以静态网页为 ...

  6. PHP ob缓存页面静态化技术

    判断大型网站的标准 1 Pv(page views) Page view 就是页面浏览次数: 一个网站在一天内,所有页面被浏览的次数综合., 上千万的pv值,百万级的也勉强可以算. 2  IP 一天内 ...

  7. PHP实现页面静态化

    为什么要页面静态化? 1.动态文件执行过程:语法分析-编译-运行 2.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,直接运行,响应速度快:如果页面中一些内容不经常改动,动态 ...

  8. HTML页面静态化技术

    随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化. 此文已Django的 ...

  9. 网站优化---页面静态化技术

    一: 首先先区分一下动态页面和静态页面的区别 动态文件:PHP脚本.Java脚本等 动态文件的执行过程:词法.语法分析 -> 编译 -> 渲染输出 静态文件:HTML文件 从加载速度上可以 ...

最新文章

  1. Java-Maven(四):Eclipse集成Maven环境配置
  2. C++编译器何时为用户提供默认构造函数
  3. hadoop2.x常用端口及定义方法
  4. NC16886 炮兵阵地
  5. 国内2大Git代码托管网站
  6. Linux shell - 重命名文件和文件夹(mv)
  7. linux下载python 没有iedl_linux 安装python
  8. 实现分页统计记录总数时: sql语句的异常
  9. Tomcat + hexo 搭建博客
  10. python官网下载安装-Python2.7.6下载
  11. java集成常用数组操作的类(比之前的集成度高点)
  12. 毕业设计 基于java的贴吧论坛_java毕业设计_springboot框架的论坛贴吧
  13. 【Linux】进程通信、同步、IO复用代码
  14. ANYCUBIC Photon Mono 4K光固化打印机快速上手(多次试错的经验积累)
  15. no jdk specified
  16. Mysql主从切换自动_keepalived实现对mysql主从复制的主备自动切换
  17. linux win7和windows server 2008 关闭数据执行保护
  18. ES可视化工具--Dejavu--下载、安装、使用
  19. 随机抽样的python实现
  20. Axure 9元件使用

热门文章

  1. 优酷开放SDK之setOnTimeOutListener
  2. 图灵原版计算机科学系列,图灵原版计算科学系列
  3. 纯券过户(free of payment)
  4. ubuntu 配置minicom 进行串口开发
  5. nginx修改默认运行80端口的方法
  6. 十二届 - CSU 1803 :2016(同余定理)
  7. jquery中filter、find、children、contents、contains区别
  8. XML文件与实体类的互相转换
  9. shiro添加注解@RequiresPermissions无效
  10. UVA - 10118 Free Candies 记忆化搜索经典