靜態頁面
即靜態網頁,指已經裝載好內容HTML頁面,無需經過請求伺服器資料和編譯過程,直接載入到客戶瀏覽器上顯示出來。通俗的說就是產生獨立的HTML頁面,且不與伺服器進行資料互動。
優缺點描述:
靜態網頁的內容穩定,頁面載入速度極快;
不與伺服器交互,提升安全性;
靜態網頁的互動性差,資料即時性很低;
維度成本高,產生很多HTML頁面;
動態頁面
指跟靜態網頁相對的一種網頁程式設計技術,頁面的內容需要請求伺服器獲取,在不考慮緩存的情況下,服務介面的資料變化,頁面載入的內容也會即時變化,顯示的內容卻是隨著資料庫操作的結果而動態改變的。
優缺點描述:
動態網頁的即時獲取數據,延遲性低;
依賴資料庫交互,頁面維護成本很低;
與資料庫即時交互,安全控制的成本高;
頁面載入速度十分依賴資料庫和服務的效能;
動態頁面和靜態頁面有很強的相對性,對比之下也比較好理解。
動態頁面靜態化處理的應用程式場景非常多,例如:
大型網站的頭部和底部,靜態化之後統一載入;
媒體網站,內容經過渲染,直接轉為HTML網頁;
高並發下,CDN邊緣節點代理的靜態網頁;
電商網站中,複雜的產品詳情頁處理;
靜態化技術的根本:提示服務的回應速度,或者說使響應節點提前,如一般的流程,頁面(客戶端)請求服務,服務處理,響應數據,頁面裝載,一系列流程走下來不僅複雜,而且耗時,如果基於靜態化技術處理之後,直接載入靜態頁面,好了請求結束。
靜態頁面轉換是一個相對複雜的過程,其中核心流程如下:
開發一個頁面模板,即靜態網頁樣式;
提供接口,給頁面模板獲取數據;
頁面模板中編寫數據介面返參的解析流程;
基於解析引擎,把資料和頁面範本合併;
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-freemarker</artifactid> </dependency>
<title>PageStatic</title> 主题:${myTitle}<br> 作者:${data.auth} 日期:${data.date}<br>
规格描述 | 产品详情 |
---|---|
${info.desc} |
@Service public class PageServiceImpl implements PageService { private static final Logger LOGGER = LoggerFactory.getLogger(PageServiceImpl.class) ; private static final String PATH = "/templates/" ; @Override public void ftlToHtml() throws Exception { // 创建配置类 Configuration configuration = new Configuration(Configuration.getVersion()); // 设置模板路径 String classpath = this.getClass().getResource("/").getPath(); configuration.setDirectoryForTemplateLoading(new File(classpath + PATH)); // 加载模板 Template template = configuration.getTemplate("my-page.ftl"); // 数据模型 Map<string> map = new HashMap(); map.put("myTitle", "页面静态化(PageStatic)"); map.put("tableList",getList()) ; map.put("imgList",getImgList()) ; // 静态化页面内容 String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map); LOGGER.info("content:{}",content); InputStream inputStream = IOUtils.toInputStream(content,"UTF-8"); // 输出文件 FileOutputStream fileOutputStream = new FileOutputStream(new File("F:/page/newPage.html")); IOUtils.copy(inputStream, fileOutputStream); // 关闭流 inputStream.close(); fileOutputStream.close(); } private List<tableinfo> getList (){ List<tableinfo> tableInfoList = new ArrayList() ; tableInfoList.add(new TableInfo(Constant.desc1, Constant.img01)); tableInfoList.add(new TableInfo(Constant.desc2,Constant.img02)); return tableInfoList ; } private List<string> getImgList (){ List<string> imgList = new ArrayList() ; imgList.add(Constant.img02) ; imgList.add(Constant.img02) ; return imgList ; } }</string></string></tableinfo></tableinfo></string>
以上是SpringBoot2中如何使用FreeMarker範本完成頁面靜態化處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!