天天看點

web架構概述web架構概述

web架構概述

架構是用來做邏輯處理的;

Ctrl + r 不使用浏覽器中的緩存強制重新整理目前的網頁;F5重新整理可能會用到浏覽器中的緩存。

靜态資源:前端的一個固定頁面;html,css,js;不需要檢視資料庫或程式處理,通路速度很快

動态資源:需要檢視資料庫或程式處理,通路速度沒有通路靜态資源快;而并不是頁面是一個動畫;

miniweb_frame的疊代:

1 web伺服器中內建動态邏輯判斷;

判斷file_name是以".py"結尾那麼這個請求資源是動态資源。判斷方法endswith(“.py”)

但發現随着伺服器中邏輯判斷部分的越來越複雜,而實際伺服器如果要更新邏輯處理部分也需要修改;即面對邏輯部分和伺服器部分解耦。

2 将邏輯判斷部分拿出去構成一個子產品;把所用的檔案名通過mini架構中的一個application函數傳給mini架構;mini架構通過這個函數的傳回值将body傳回給web伺服器程式;

wsgi協定:定義的是web伺服器和架構之間的請求和回複的一些規定。首先web伺服器會判斷浏覽器過來的請求是固定請求還是動态請求,如果是動态請求那麼web伺服器會

1 調用架構中的application函數,并為這個函數傳遞兩個參數,第一個參數是一個dict變量的引用,第二個參數是一個web伺服器的一個函數的引用。

2 在架構程式中通過web伺服器的函數為web伺服器傳遞header(以清單中包含多個元組,元組包含兩個元素對應header的一行)和狀态(header應該是由應用程式架構決定回複什麼内容), web伺服器的這個函數也為應用程式架構return 一個資訊(剛剛做的一些設定等等)

3 在應用程式架構中查詢資料庫等,生成動态頁面的body資訊。通過application函數将body資訊傳回給web浏覽器。

4 web浏覽器将header和body 整合之後發送給浏覽器。

wsgi協定作用:實作了伺服器和架構之間的解耦。

在一個子產品中打開一個檔案,不是看子產品所在路徑,而是看主程式的路徑;

sys.argv,的傳回值是程式名及後面跟的字元串,以空格隔開為一個元素。這個功能可以為程式傳遞參數;

通過sys.path.append(“路徑”) 添加一個子產品導入路徑;

import(子產品名),傳的第一個參數是字元串,傳回值指向這個子產品的引用;

getattr(子產品引用, 函數名)擷取子產品中的一個函數的引用;

eval()函數将一個字元裡的程式執行一遍;

shell腳本以.sh結尾,寫上linux指令;chgmd +x 檔案名.sh;修改這個檔案夾為可執行檔案;就可以通過運作這個檔案執行裡面的linux指令了;

在length對應的大小必須是對編碼之後的body取其長度;

content-type 如果指定了内容那麼隻能發送指定内容的東西;但有時候浏覽器需要解析中文text格式的有得指定content-type:text/html;chartset=‘utf-8’;這個時候浏覽器隻能解析指定的兩種内容;

在編寫代碼的過程中可以将回報的資訊輸入到浏覽器中友善判斷問題;

股票項目的關注增删操作;(不要相信使用者發送過來的請求,要判斷這個關注的股票在info中是否存在,是否之前就關注過這隻股票)

在僅僅是判斷一條記錄存不存在的時候,可以在sql語句最後加上limit 1 ;可以提高sql查詢的性能;

股票項目修改操作:包括1查到要修改的資訊,把資訊顯示在另外一個視窗中;修改那條資訊。

url編解碼:如果url請求中發送的内容中有中文或者空格,那麼浏覽器為了保證傳輸的可靠性,将這個特殊的資訊按照浏覽器特定的格式編碼;此時在伺服器中擷取的url是編碼之後的格式,可以通過python中的urllib.parse.unquote(""),将資訊解碼。

log日志:分等級在終端中列印指出的資訊,或者往一個指定的檔案夾中寫入指定的資訊。

預設是warning等級及以上會執行,(debug>info>warning>error>critical)