PHP&JavaScript控制系列用戶端資料存放區一

來源:互聯網
上載者:User

所有程式員都喜歡做的一件事就是編寫一個可以產生程式的程式。在web 上,我們面臨兩種不同的開發環境:用戶端(瀏覽器)和服務端。根據HTTP協議的定義,就可以在服務端編寫一個程式,這個程式輸出一個使用了另一種可以在用戶端執行的語言的程式。讓我們選擇PHP(當然的了)編寫服務端程式,選擇JavaScript來編寫用戶端程式。在這篇文章中,要向你示範如何通過這種組合在用戶端儲存資料並且使得伺服器與瀏覽器之間的資料交換達到最少,以用在一些互動的應用中,如聊天室、新聞系統或你想得到的什麼東西。

要素:

PHP4
JavaScript
Frames

想法:
  我們將暫時試著開發一個用PHP 編寫的HTTP聊天室程式。對於聊天來說,HTTP不是一個很好的協議,但是它對防火牆和Proxy 伺服器有免疫力,我們可以允分發揮PHP的潛力,並且不需要Java Applet。對於聊天室程式有兩個主要的問題:第一個就是,IE不支援“推”的方法,這樣就需要把它做成一個全“拉”的應用程式(指用戶端自動重新整理),這一點對於一個聊天程式不是很自然。我們打算讓用戶端的重新整理時間是可調的,伺服器將根據前x 分鐘內一個位於伺服器的用於接收訊息資料的函數結果產生重新整理時間。第二個問題要難解決一些:因為採用自動重新整理的方法,這樣每一次伺服器都需要將所有的資訊發給用戶端,我們估計會造成大量的傳輸。並且我們所做的一個類比簡單的聊天室模型的樣板程式也顯示這就是造成聊天延時的主要原因。本文處理了第二個問題和更深的問題。

普通模型:
  通過使用幀,可以重新整理一個特定的幀而不需要重新裝入其它幀,這個對於最少化c/s 傳輸很有用。我們的模型基於下面的設計:


主檔案,用來定義幀結構。
裝入幀檔案。
顯示幀檔案。
  在我們的設計中,裝入幀每“x” 秒自動重新整理,想法是將資料儲存在主檔案中,允許裝入幀檔案向伺服器請求用戶端還未收到的資料。我們使用時間戳來標記訊息,新聞或可傳輸的東西,並且通過它可以知道哪一個需要傳給用戶端,哪一個不需要。我們使用PHP4的session 功能將“最後的時間戳記”儲存在用戶端以便在伺服器它也是可見的。當裝入幀檔案接收到資料時,資料被儲存在主檔案裡(注意,主檔案可能很大,但是它只傳輸一次),然後讓顯示幀檔案重新整理。為了進一步最佳化,我們讓顯示幀檔案儘可能的短,在這幀裡,只是調用一個“display”的JavaScript 函數,這個函數明顯被儲存在主檔案中,這個函數使用儲存在主檔案中的資料來動態繪製顯示幀。讓我們看一下這個方法:



瀏覽器請求主檔案(幀結構)
主檔案從伺服器被傳輸過來,它定義了幀結構,然後其它的幀(裝入幀和顯示幀)被傳輸。
裝入幀檔案在伺服器被分析,如果用戶端沒有“timestamp”session 變數,它就將所有的資料從服務
器上取回,並且產生JavaScript代碼將資料存在主檔案中。然後設定“timestamp”session變數。
然後裝入幀檔案產生JavaScript代碼使用戶端重新整理顯示幀檔案。
這個重新整理引起顯示幀檔案調用“display”函數,這個函數根據資料產生顯示幀。
每“x”秒我們回到(2)
我們對這個方法的分析如下:

我們要三個檔案:

主檔案 (很大,包含顯示代碼和儲存的變數和初始值)
裝入幀檔案 (小,包含php代碼,用於從伺服器取回資料和產生JavaScript代碼)
顯示幀檔案 (非常小,只有一個對主檔案中的顯示函數的調用)


主檔案只被傳輸一次。
裝入幀檔案和顯示幀檔案每“x”秒被傳輸一次。
裝入幀檔案可能在第一次被調時大一些,然後因為每次只取回用戶端未取過的資料,它就變得很短了。
顯示幀檔案也是一樣。
由於顯示結果是在用戶端被處理的,我們就減少了伺服器資料的裝入。

糊塗了嗎?還是讓我們看一看例子吧:

  在這個例子裡,我們建了一個聊天室,它還不能真正使用,只是用來示範如何?我們的模型,請不要提出“為什麼不在聊天室裡加上這個或加上那個功能”之類的要求。如果發現這個模型有用,你可以利用它建立一個滿足你的要求的足夠複雜的聊天室來,同時請記住,它不只是能夠用來建聊天室。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.