6

一個ASP.Net Web應用程序我在建立一個asp.net(3.5)的web應用程序的過程中我並想知道如果你知道有什麼方法我能做到這一點,這樣會有一些離線功能。構建具有離線功能

這是必要的,因爲人們將能夠在他們的設備上「安裝」 Web應用程序(使用「添加到主屏幕」功能在iPhone上的例子),然後使用時,他們的離線應用程序;使用情況只會受到限制(此時不需要服務器調用)。

這能與一個.aspx頁面做了什麼?

編輯 - 添加.manifest的:

CACHE MANIFEST 
index.aspx 

/logo.png 
/main.css 
/main.js 

編輯no.2-

我們有脫機工作,在一個時尚;它可以在Safari瀏覽器中運行,但我們並不希望它在Safari瀏覽器中,我們希望它作爲獨立的應用程序。當我們嘗試像這樣運行它時,我們得到'無法連接到服務器錯誤'。這可能與.aspx頁面?

編輯3號 -

我們走了這麼使用的.html頁面的工作,但仍尚未與一個.aspx

編輯no.4-

它現在的工作,雖然我們不確定爲什麼!我們在上週的cache.manifest的'網絡'部分添加了index.aspx(上週沒有工作!),這可能有幫助,但是一旦我知道我將會更新你實際發生的事情!

感謝大家的幫助!

+0

名爲'cache.manifest'(iOS要求)的文件及其響應類型'text/cache-manifest'?你確定你沒有得到這些資源的任何404s? –

+0

@pep是的,這個文件被稱爲'cache.manifest',響應類型也是'text/cache-manifest'。我們也在IIS中設置了MIME類型。我們也沒有得到任何404s。這很混亂! – donpisci

+0

我已經使用ASPX完成了一個完整的應用程序,主屏幕應用程序或Safari瀏覽器上沒有緩存問題。由於您似乎遇到了一個奇怪的問題,因此使用呈現給瀏覽器的HTML更新您的答案可能會非常有幫助,因此我們可以確切地看到發生了什麼。你可能不需要發佈像body這樣的內容,但如果可能的話,發佈任何類似doctype,頭文件,meta標籤等等。它看起來應該起作用 - 我最後的問題是確保你看起來覆蓋的基地正在做。 –

回答

0

是可以用ASP.NET來完成,因爲ASP.NET呈現在客戶端瀏覽器的HTML頁面,離線功能是一個純JavaScript/HTML功能。 Here是Stephen Walther的一篇文章,展示了一種方法。

+0

謝謝,我剛剛嘗試添加ashx處理程序,但我仍然收到'無法打開,因爲它無法連接到服務器'錯誤。我會用我當前的.manifest文件更新我的初始文章,因爲我可能沒有那麼做。 – donpisci

12

對於ASP.NET HTML5離線應用程序,請參見本link,這link

對於離線功能,也有一些備選方案:

- 如果需要少量數據存儲在離線應用程序,安全不是一個大問題,您可以使用HTML5 Web存儲( link,link,link,link,link,並且看看CanIUse瞭解瀏覽器版本的支持)。

的主要缺點是它缺乏安全性,是基於鍵值(沒有複雜的結構)並且在存儲容量較大的侷限性(5MB大多數瀏覽器)。


- 如果你需要更大的數據量,你可以看看INDEXDB(linklinklinkCanIUse)或Web SQL(linklinklinkCanIUse的瀏覽器支持)。

Web SQL的主要缺點是Firefox不支持IE瀏覽器。此外,它也被W3C棄用。

IndexDB很好(link),但它似乎仍然不支持它(請參閱canIUse)。

對於方法1和方法2,您可以在ASP.NET應用程序(link)中製作響應式設計或專用移動網站。


- (更大的靈活性,需要更多的努力)實現在ASP.NET應用程序的Web服務和應用的偶爾連接的應用概念移動本地應用(詳細信息:linklink

  • ASP.NET Web應用程序 =>對於Web應用程序,請向Web服務公開與脫機功能相關的服務。

  • 移動應用程序 =>爲應用程序使用數據庫實現原生移動應用程序(例如,爲android和iphone開發應用程序)。然後,您將在移動應用程序中創建脫機功能,該功能將使用其自己的數據庫來讀取和寫入(本地)必須脫機使用的數據。

您然後實現在移動應用程序依賴互聯網上(例如,一個經常性的線程),將通過訪問通過Web服務的ASP.NET應用程序的更新搜索無聲的同步機制。此同步機制將發送本地存儲的數據,並從Web服務中恢復可用於脫機功能的數據。


希望它有幫助。

+1

感謝您的回覆。我們使用本地存儲來存儲用戶需要的任何數據,但是我們遇到的問題是,當我們將Web應用安裝到設備上,然後將設備置於飛行模式時,我們無法啓動應用。我們已經嘗試使用.html頁面作爲默認頁面,並且工作正常,但是在.aspx頁面中,它遇到了所述的錯誤。 – donpisci

0

是的。這可以像其他人所說的那樣使用Cache Manifest來完成。

我會建議做的是創建一個handler來生成cache manifest,它可以是動態的。

緩存清單文件令人痛苦的一件事是,除非該文件更改,更新不會發生。這是處理程序進來的地方。添加註釋部分用#作爲註釋符,並更新時間戳後

#2013-08-08 1:53:36 PM 'This is your comment section

如果這是由一個處理程序產生的,您可以在數據庫存儲在每個用戶的頁面可能已更新(此決策它的動態,同時在使用緩存清單仍然將其高速緩存)牢記

一件重要的事情:

被緩存必須將這些被訪問的確切查詢字符串匹配的文件。這在某些設備上似乎區分大小寫,並且一個MUST上存在的任何查詢字符串在另一個上完全相同,因此在生成緩存清單文件時需要這種先見之明。

+0

爲什麼downvote?這回答了這個問題,並深入瞭解瞭如何 –