2012-01-03 36 views
0

什麼是更好/最好的解決方案?以前我所有的標記都在HTML文件進行初始化,

的index.php

//login block 
<div id="login"> 
    form ... 
</div> 

所以每當我登錄,我必須使用$.ajax檢查,如果刪除/隱藏這些登錄區塊有一個現有的會話,然後隱藏整個登錄標記(.hide()),並顯示登錄用戶的不同標記。

這樣做的問題是,它在執行腳本之前等待整個文檔加載,因此在加載頁面時,意外/隱藏標記將顯示然後消失。

我也嘗試在javascript內嵌標記,但我認爲它違反了js中的「Unobtrusive」的想法。

例如

var markup_arr = [ 
    '<h4>Login</h4>', 
    '<form></form>' 
]; 
var markup = markup_arr.join(''); 

所以我結束了這個

目前的解決方案:單獨的HTML文件,然後使用加載它jQuery的$ .load()

你在使用,這是最好的做法,哪一個加載速度快?或者有沒有更好的解決方案,你可以建議?謝謝。

編輯: 這些都是所有的JavaScript/AJAX的過程,所以我不是在尋找一個服務器端解決方案(包括require_once)

+0

[標籤:你在做錯了]。 – 2012-01-03 04:00:16

+0

你是否也通過ajax執行登錄操作?如果沒有,那麼你不能在服務器上渲染時做出該選擇嗎?你會知道這是否是已登錄的會話,並且可以包含相應的標記以發送電報 – rejj 2012-01-03 04:00:26

+0

爲什麼只是不要將寫入內容與服務器端腳本一起提供? – 2012-01-03 04:00:39

回答

2

有沒有正確的答案。我的看法是,您希望以最少的請求數量向您的用戶提供最少量的數據。這完全是爲了找到合適的平衡。根據您的用戶,餘額將變爲。

對我來說,我寧願發送兩個5kB的文件,而不是兩個2kB的文件。您發送更多數據,但由於請求數量較少,所以應該儘可能快。我認爲把它作爲Javascript的一部分來傳遞可能是最好的。請注意,它不一定需要是相同的文件,儘管我將它作爲一個提供 - 具有將代碼文件和數據文件合併爲一個的簡單(PHP等)腳本,然後將它傳遞出去

另一件事我會確定的是,你儘可能地緩存所有的東西。如果您只需下載一次並緩存一年,則文件稍大一些通常不是問題。如果您的用戶每天都在下載更大的文件,或者更糟糕,那麼每個頁面查看都會成爲問題。

0

如果會話存在,我會做的是檢查服務器端,如果會話存在,幷包含單獨的「html」(php/rb/py/asp/whatever)文件,如果不存在,則包含登錄表單。當用戶登錄時,ajax會回答相同的「html」文件。 (如果我正確理解您的問題,並且登錄表單是頁眉中的單行)。

相關問題