杭州派迪科技为高端客户提供品牌利来手机网址官网咨询策划,品牌利来手机网址官网设计,品牌利来手机网址官网建设开发服务,以国际化视野和标准为基础,为各行业领军品牌提供高端企业网站定制、策划、设计、互动与制作
查看详情网站优化之使用free marker静态化网站文章页-利来国际登录
博客做出来的时分就想要把一些栏目和文章页都静态化处理,当时没啥时刻搞,就一向没去弄。可是最近的工作就是做网站,用cms快速搭出了几个网站,cms建立网站是真的便利啊 假如没有需要二次开发实现的功能,那基本不需要写后端代码的。并且做出来的还不错,怪不得看很多博主都是用cms建立的博客。 我是用的freecms,展示层就有用free marker来做。 然后就参阅这个cms的源码 把自己博客的文章页静态化了下。
原文连接:杭州网站建设
静态化主要是为了提高网页打开的速度,然后还有利于seo,更容易被搜索引擎识别收录,而且比较稳定和安全。
free marker静态化原理是用模板 数据模型=输出html网页。
freemarker并不关心数据的来源,只是根据模板的内容,将数据模型在模板中显示并输出文件(通常为html,也可以生成其它格式的文本文件)
首先引入jar包
free marker的jar包和文档
maven依赖
org.freemarker freemarker 2.3.23
代码
根据模板文件和数据模型创建html的方法
private void createhtml(string templetpath, string siteinfopath, hashmap map) throws exception { // ①创建配置对象(创建一个configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。) configuration cfg = new configuration(configuration.getversion());// 注意:这里需要传递一个版本// ②读取模板文件夹 cfg.setdirectoryfortemplateloading(new file(templetpath));// 设置要加载的模板文件的路径,这里的templetpath就是模板的路径webapp/templet/// ③设置模板的编码格式
cfg.setdefaultencoding("utf-8");
// ④获取模板对象 file htmlfile = new file(siteinfopath); //siteinfopath是静态化生成的html存放的路径,webapp/site/info/2019-11-30(文章日期)/文章id.html(根据自己的需要来设置)template template = cfg.gettemplate("info.html");// info.html是模板名称
// ⑥将模板和数据模型合并 --> 输出模板,生成文件
// 静态页面路径 printwriter pw = new printwriter(htmlfile);if (!htmlfile.getparentfile().exists()) {
htmlfile.getparentfile().mkdirs(); //文章不存在则创建
}template.process(map, pw);// 合并 map:数据模型 pw:输出流对象 map中存的是模板文件中需要的数据文章列表等,在模板文件中用${..}获取,可参考free marker文档
pw.close();// 关闭流 }
静态化文章页的方法
/** * 静态化文章页 * * @param articleid * @throws ioexception @requestmapping({"/tocrea****"}) */ public string tocreate****(httpservletrequest request, long articleid) throws exception {logger.info("静态化文章方法开始");
//查询要静态化的文章信息 article articledetail = articleservice.selectbykeywords(article);article article = new article();
article.setarticleid(articleid); string articletime = tools.getstrdatetime(articledetail.getcreationtime(), "yyyy-mm-dd");//文章发布的时间,用于将静态化的文章网页放在对应时间的文件夹中
// 给文章添加访问路径(发布一篇文章后静态化该文章,静态化时将该文章的静态化后路径添加至数据库) request.getcontextpath() "/site/info" articleid ".html";string pageurl = request.getscheme() "://" request.getservername() ":" request.getserverport()
articledetail.setpage;
articleservice.uparticle(articledetail); hashmap map = new hashmap<>(); // 创建数据模型(这里使用map类型) --[数据模型可以是list、map对象 注意:map类型的key必须是string类型] map.put("contextpathno", request.getsession().getservletcontext().getcontextpath());// 项目名称,用于生成后html页面的静态资源调用css,img等// 文章信息
......//其他信息代码省略。。。
map.put("info", articledetail);
...... //静态化生成的html路径//模板所在的路径
string templetpath = request.getsession().getservletcontext().getrealpath("/templet"); .getrealpath("/site/info/" articletime "/" articleid ".html");string siteinfopath = request.getsession().getservletcontext()
createhtml(templetpath, siteinfopath, map);
return "success"; }
模板文件info.html(省略了很多代码,仅作为示例)
${info.articletitle}
发布时间:${info.creationtime?string('yyyy-mm-dd hh:mm') } 编辑:${info.articleauthor} 阅读:
- ${info.articledetail }
上一篇:${uparticle.articletitle}
- ${newlist.articletitle?substring(0,16)}...
- ${newlist.articletitle}
这样就能根据模板来生成一个html静态网页了。
需要注意的是,有些动态展示的内容 是不能直接静态化的,比如 文章的点击数和 右侧的最热文章,最新文章,底部的上一篇下一篇等。。。
暂时没有的解决方式 我就用了ajax来加载的。。
相关专题
-
为什么要有一个cms网站?您需要一个cms网站吗?
2021-11-13
-
我们正在讨论 2022 年的电商网站设计趋势
2021-11-12
-
对于建站新手而言,如何更好的选择域名和搭建网站?
2021-11-12
-
与杭州网站开发公司派迪科技合作有很多好处,您点开看看?
2021-11-10
-
永远不要低估您的内容营销策略的重要性
2021-11-09
-
商业企业网站在 2022 年快速增长的主要原因
2021-11-08
体验从沟通开始,让我们聆听您的需求!
开始您的数字化品牌体验! 0571-85815193 期待您的来电!

派迪业务总监微信号
了解最新项目报价

派迪产品经理钉钉号
免费获取项目方案