整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          頁面靜態化技術演進

          頁面靜態化技術演進

          SpringBoot Thymeleaf模板

          原理:服務端渲染、模板變量替換。與 Spring Boot,MVC方言完美結合。


          優勢

          • 傳統J2E使用JSP方式開發,但 Spring Boot對JSP支持不好。JSP規范與Servlet規范緊密耦合,使用JSP需要喚起servlet進程。
          • Thymeleaf支持HTML原型,可靜態使用。

          劣勢

          • 傳統模板頁面基于服務端,需要喚起servlet容器,走springmvc全套流程。
          • 模板渲染IO操作
          • 較難緩存。用戶請求在訪問到springboot server時,還會經過nginx,如果使用模板渲染,很難在nignx上做緩存。

          2 動靜請求分離

          動靜分離的設計原理:區分動靜態請求。

          • 動態請求:每次都從服務端獲取數據請求。
          • 靜態請求:不必每次從服務端獲取的頁面展示請求。

          優勢

          • 架構分離:分層優化
          • 緩存策略分離:例如前端做nginx、瀏覽器、cdn等緩存。
          • 研發框架分離:提高研發效率。

          靜態資源服務器,例如nignx;動態請求服務器,例如Tomcat;前后端采用Ajax等前端異步化交互技術發起請求,獲取數據,填充靜態頁面。

          實現技術

          Ajax是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術。

          Nginx可以用作動態請求反向代理,也可以用作靜態請求使用html resources。

          3 靜態請求緩存效率化

          主要是CDN分發技術和Nginx proxy cache文件緩存。

          CDN是內容分發網絡,具有高性能、高可用、高擴展性的優點。

          • CDN是帶有緩存性質的網絡節點。即CDN是web服務器,提供了靜態資源緩存機制。
          • 分發能力,請求分發到最近的節點。
          • 具有負載均衡能力,沒有單點問題。
          • 需要專門運營維護CDN網絡。

          未使用CDN技術

          使用CDN技術緩存靜態資源。

          客戶端發起請求到DNS,查詢ip地址,根據CNAME返回CDN管控節點域名,實現DNS解析權移交。管控節點根據請求ip地址分發到最近的CDN節點(負載均衡與分發)。如果在CDN節點命中緩存,直接返回,否則請求靜態資源并備份。

          運營廠商CDN實現原理中,HTTP 緩存頭起到了重要作用。

          Http緩存頭 cache-ctrol

          private:客戶端可以緩存.

          public:客戶端和代理服務器都可以緩存。

          max-age=xxx:緩存的內容將在XXX秒后失效。

          no- cache:強制向服務端再驗證一次,判斷是否生效。

          no-store:不緩存請求的任何返回內容。

          有效性判斷(驗證時帶上如下參數)

          ETag:資源唯一標識

          If-None-Match:客戶端發送的匹配Etag標識符

          Last- modified:資源最后被修改的時間

          If- Modified- Since:客戶端發送的匹配資源最后修改時間的標識符

          4 動態請求緩存

          4.1 動態請求前置緩存

          前置緩存的使用,提高查詢速度,減少數據庫訪問量。

          • Redis集中式緩存
          • 本地緩存:Tomcat緩存

          包括主動失效、被動失效,需要解決緩存擊穿、降級等問題。

          4.2 使用Nginx proxy cache


          Nginx Lua腳本編程定制化:

          在nginx生命周期中,Lua通過協程機制在某些環節實現鉤子機制。例如master進程創建worker進程時,運行初始化腳本;檢測到某個url請求時,直接調用Redis返回response,從而省掉springboot webmvc流程。

          Nginx proxy cache使用較少,因為再快的文件讀寫速度也比不上內存的讀寫速度。

          4.3 Nginx shared dic 本地緩存

          原理:nginx服務器的內存緩存,所有worker進程共享,通過lua操作。



          lua腳本

          獲取緩存空間,從中獲取list緩存。如果為空則轉發請求,獲取響應數據并緩存。

          5 全頁面靜態化技術

          原理:服務端通過類似爬蟲的技術直接完成動態請求加載完成后的靜態頁面,將HTML、CSS、JS資源全部加載完后的頁面生成后部署到CDN上。

          我們訪問頁面,發起靜態請求從CDN中獲取html資源文件,發起動態請求訪問nginx、tomcat獲取響應數據,然后在客戶端渲染頁面。需要三步操作。

          如果將渲染好的頁面直接放到CDN上,則客戶端可以直接獲取。

          優勢:無需加載、無需動態請求、可全部CDN化

          實現:

          • 類似爬蟲的技術
          • 無頭瀏覽器:類似瀏覽器,加載HTML文件,運行JavaScript,執行Ajax請求,獲取數據,填充到DOM,輸出靜態資源文件。

          HtmlUnit

          Httpclient無法搞定動態請求,HtmlUnit可用于爬蟲,測試自動化工具等

          HtmlUnit是一個無界面瀏覽器Java程序。為HTML文檔建模,提供了調用頁面、填寫表單、單擊鏈接等操作的APl。提供了對 Javascript的支持,甚至可以使用相當復雜的Ajax庫,根據配置的不同模擬 Chrome、 Firefox等瀏覽器。

          上圖.test.html書寫錯誤

          來源:https://www.cnblogs.com/dtyy/p/15531799.html

          天我親手創建了一個網頁。首先,打開一個文本文檔并將其重命名為“myweb”。然后,在文件中添加以下內容:<html> <head> <title>My First Webpage</title> </head> <body> <h1>My First Webpage</h1> </body> </html>

          這樣,你就成功地創建了一個靜態網頁,地址為本地。右鍵點擊文件,選擇“打開方式”,選擇“記事本”,然后在文件中添加以下代碼:<h1>Dog typehtml</h1>

          這是一個HTML5的標簽,它包含了HTML聲明和標簽的功能。網頁的主體部分只有一個標簽,即HTML標簽,它是一個雙標簽,包含一個開始標簽和一個結束標簽,內部包含一個標題和網頁內容。在網頁的主體部分中,可以設置樣式、參數、標題等。

          網頁的主體部分是由HTML標簽包裹的,這是一個雙標簽,包括開始標簽和結束標簽。大美麗的網頁,保存并刷新。大美麗網頁的開頭部分已經添加完成,網頁的主體部分位于標題下方,即文章下方的部分,都是網頁的主體部分。我的第一個網頁就這樣完成了,非常有趣。保存并刷新網頁。我的第一個網頁只是一個簡單的靜態網頁,如果需要添加更多功能,可以使用網頁開發工具進行操作。

          在網頁中添加一個生日祝福的內容。在王翰的文章中添加一個標題,標題為“生日祝福”。這也是一個雙標簽,包括開始標簽和結束標簽。保存并刷新網頁。

          在大美麗網頁中添加一個圖片。這是一個單標簽,只有一個標簽,沒有結束標簽。在百度中搜索一張圖片,并將其地址復制下來。使用快捷鍵Ctrl + C,然后使用快捷鍵Ctrl + V將圖片添加到網頁中。保存并刷新網頁,你會看到圖片已經顯示在網頁中。

          在網頁中添加一段文字和圖片,使它們位于同一行。使用行內標簽“span”,使文字不會換行。保存并刷新網頁。

          這就是我今天做的第一個網頁,非常簡單。通過創建一個文本文檔并添加一些簡單的內容,就可以創建一個簡單的靜態網頁。使用記事本打開文件會自動顯示代碼提示,按一個Tap縮進一行,就可以添加更多的標簽和內容。行內標簽可以嵌套在塊標簽中,但塊標簽不能嵌套在行內標簽中。

          使用color屬性將其設置為藍色,保存并刷新頁面,即可獲得相應的代碼提示。只需輸入color,即可獲得相應的提示,而無需輸入c。這樣的代碼更加易讀。今天的任務已經完成,可以回顧一下今天的重點。了解了h天貓無網頁的特性,只能包含一個h天命標簽,且只能包含一個焊的body。

          還學習了雙標簽和單標簽的概念。雙標簽是指有頭有尾的標簽,如html hand。單標簽則只有一個標簽,例如一妹子。此外,還了解了行內標簽和塊標簽的區別。請自行查看相關內容。為標簽定義樣式時,可以使用style屬性。然后在其中添加顏色、字體等樣式信息即可。對于圖片標簽,請注意使用其 src 屬性來指定圖片路徑。今天的學習就到這里了,再見。

          為HTML頁面只能是靜態的......再想一想!查看使用HTML頁面進行簡單動態操作的示例。

          根據靜態頁面的定義- “它顯示的信息與存儲的完全一致”。因此,如果要構建一個顯示數據庫信息的頁面(動態),那么您將使用服務器端頁面,如.php / .aspx / .cshtml

          作為一名網絡開發人員,我經常聽到 HTML頁面是一個靜態頁面,所以它不能用于顯示動態內容。” 這聽起來很公平,但并不完全正確。讓我們討論為什么HTML頁面不是真正的靜態頁面。

          使用HTML頁面進行簡單動態操作

          讓我們使用HTML頁面進行簡單而強大的操作。在這里,我將創建一個用戶可以訂閱博客的功能。這個功能在互聯網上很常見!

          您將擁有“輸入”和“按鈕”控件。用戶將輸入他/她的電子郵件并單擊按鈕。單擊該按鈕,他/她的電子郵件應存儲在數據庫表中,他/她應該收到一條感謝信息。

          HTML頁面代碼:

          <input id="email" placeholder="Email Address" />

          <button id="submit">Submit</button>

          <div id="message"></div>

          注意:最后的消息(謝謝)將顯示在“message”div中。

          使HTML頁面動態化

          現在的問題是,“如何在數據庫中插入電子郵件并顯示感謝信息?” 答案是通過 jQuery AJAX 方法。

          這是主要的捕獲!使用jQuery AJAX,我可以將電子郵件值發送到PHP頁面,然后這個PHP頁面將它插入到數據庫中,然后返回感謝信息。

          我將在按鈕單擊 事件上調用jQuery AJAX方法,并將電子郵件值發布到PHP 頁面。

          下面是我們的jQuery AJAX代碼

          $("#submit").click(function (e) {

          $.ajax({

          type: "POST",

          url: "result.php",

          contentType: "application/json; charset=utf-8",

          data: '{"email":"' + $("#email").val() + '"}',

          success: function (msg) {

          $("#message").html(msg);

          },

          error: function (req, status, error) {

          alert(req + " " + status + " " + error);

          }

          });

          return false;

          });

          說明:在上面的jQuery AJAX方法代碼中,我將 url 鍵傳遞給 result.php 頁面。此PHP頁面將接收電子郵件值。

          “數據”值(見jQuery的AJAX代碼),將通過電子郵件的用戶填寫輸入控制值。

          AJAX請求成功完成時將調用的“ success ”回調函數。我在此回調函數中從PHP頁面接收返回的值,然后將其放在“ message ”div中。

          如果在AJAX調用期間出現一些錯誤,則調用“ 錯誤 ”回調函數。

          最后PHP頁面......

          <?PHP

          $ email=$ _REQUEST ['email'];

          //進行數據庫操作并在電子郵件中插入電子郵件值。

          //如果插入操作成功,則回顯“您已訂閱”。

          //別的“出了點問題。再試一次。”

          //我假設操作成功,所以返回

          //“你訂閱了。” 回到jQuery AJAX方法的消息。回聲“謝謝!”;

          ?>

          PHP頁面接收電子郵件值,將其插入數據庫,然后發回謝謝消息。

          代碼部分到此結束。現在,如果任何Web開發人員告訴您HTML頁面不能用于顯示動態內容,請禮貌地告訴那個人,“你錯了,還有另一種方式!”

          使用jQuery AJAX, HTML頁面可以像服務器頁面一樣工作。您可以使用它,從HTML頁面直接創建任何類型的數據庫應用程序。

          快樂的編碼,不要忘記喜歡這個教程!


          主站蜘蛛池模板: 欧美人妻一区黄a片| 怡红院一区二区三区| 国产精品一区二区三区99| 99偷拍视频精品一区二区| 亚洲欧美国产国产综合一区| 中文字幕无码不卡一区二区三区| 日本免费一区二区在线观看| 国产精品分类视频分类一区| 濑亚美莉在线视频一区| 国产成人精品一区在线| 国产在线步兵一区二区三区| 久久久久人妻精品一区蜜桃| 精品日韩一区二区| 少妇激情AV一区二区三区| 相泽南亚洲一区二区在线播放| 中文字幕精品一区| 精品国产一区二区三区www| 亚洲一区二区三区香蕉| 精品女同一区二区三区在线| 一区二区在线免费视频| 国产麻豆剧果冻传媒一区| 国产主播福利一区二区| 亚洲变态另类一区二区三区 | 中文字幕精品一区二区精品| 国产成人精品日本亚洲专一区 | 在线播放国产一区二区三区 | 精品国产乱码一区二区三区| 成人国产一区二区三区| 天堂Aⅴ无码一区二区三区| 日本香蕉一区二区三区| 亚洲一区二区三区在线观看网站| 亚洲国产精品无码久久一区二区 | 精品视频一区二区三区| 成人国产精品一区二区网站| 日韩在线视频一区二区三区| 国产乱码精品一区二区三区四川人| 精品成人乱色一区二区| 中文乱码人妻系列一区二区| 亚洲AV日韩AV一区二区三曲| 精品国产免费一区二区| 国产成人精品久久一区二区三区av |