2013-09-28 41 views
0

我正在開發一個帶有jQuery和Twitter Bootstrap的PHP web應用程序。它將AJAX用於一切。所以,我在HTML5中顯示一個表單,用戶按下一個按鈕(class =「btn」),表單被髮送到PHP(jQuery,AJAX),PHP向MySQL發出查詢並回應一個答案,該答案顯示在表單(jQuery)。這基本上是Web應用程序的工作原理。如何避免PHP中的一些SQL查詢?

但這裏的交易,則表明第一種形式,它是一個div顯示一些消息。例如:

A new user was created. 
There is new important date. 
Someone wants to text you. 

所以我創建MySQL中的表稱爲新聞,我存了一些值比的意思是這樣:

1: A new user was created 
... 

每次用戶登錄意志瑟說。這意味着會立刻查詢和響應的HTML5得到加載,當用戶登錄。

index.html文件有一個導航欄(引導),以及期權贖回新聞。當用戶點擊它時,將執行相同的查詢,但不一定是相同的響應。

我以爲每當用戶執行操作時都會在新聞中修改div。但是,一個動作也可以由另一個用戶完成。所以有必要再次進行查詢!

有沒有可以讓我避免查詢,當用戶想要得到的消息數據庫的任何解決方案?或者我怎麼知道現在有必要更新div?我正在查看緩存查詢,但沒有得出結論。

對不起,如果我的英語不太好,它不是我的母語。

謝謝。

回答

0

您可以從服務器發送每個新聞回覆中的時間戳並將其保存爲javascript。下一次發出請求時,發送您保存的時間戳,服務器檢查是否有更新的消息,如果沒有消息,則發送任何消息,因爲最後的響應仍然是最新消息。

好吧,這裏有一個缺點,你仍然需要對數據庫進行查詢(用'WHERE ... TIMESTAMP> last_timestamp_from_browser'這樣的WHERE子句來填充結果),SGBDs是爲這一點,並且如果您沒有成千上萬的用戶同時訪問您的網站,則不會有任何問題。採用這種方法,您只能保存bandwitdh,因爲仍然可以連接到數據庫。

存在阻止被做這方面,緩存的最後插入的消息可能是用戶特定或全局,並將它們保存在APC模塊(或memcached的)一些值的另一種方式。您需要發現要緩存的內容以及何時(您無法緩存整個數據庫,只是一些組織良好的時間戳,也可能是最受歡迎的新聞)。這樣可以防止數據庫連接的發生。這將迫使你做更多的代碼,所以,只有在你真的需要它的時候才使用它,比如成千上萬的用戶連接。