मैं एक एएसपी एमवीसी 3 वेबसाइट के साथ काम कर रहे एचटीएमएल 5 ऑफ़लाइन एप्लिकेशन कैश प्राप्त करने की कोशिश कर रहा हूं। मुझे मिली समस्या यह है कि जब मैं ऑफ़लाइन मोड में किसी पृष्ठ पर नेविगेट करने का प्रयास करता हूं, तो यह काम नहीं करता है।क्या एजेक्स अनुरोधों के साथ एचटीएमएल 5 कैश मेनिफेस्ट काम भी करना चाहिए?
मैं मैनिफेस्ट फ़ाइल के लिए एक क्रिया का उपयोग कर रहा हूं ताकि इसे गतिशील रूप से जेनरेट किया जा सके, और दृश्य में मैं Resonse.ContentType = "text/cache-manifest" निर्दिष्ट करता हूं।
मैंने आईआईएस में स्थानीय रूप से एप्लिकेशन होस्ट किया है, इसलिए मैं इसे एक्सेस करने के लिए http://192.168.55.127/mywebsite/ का उपयोग कर रहा हूं।
यह मैनिफेस्ट व्यू है जिसका मैं उपयोग कर रहा हूं। यह रेज़र व्यू इंजन का उपयोग करता है और यह थोड़ा गन्दा (हार्ड कोडित यूआरएल इत्यादि) है जबकि मैं यह पता लगाने की कोशिश करता हूं कि क्या गलत है।
http://192.168.55.127/mywebsite/scripts/Libs/jQuery.js
http://192.168.55.127/mywebsite/pages/home.htm
जो ठीक लगता है:
@{
Layout = null;
Response.ContentType = "text/cache-manifest";
}
CACHE MANIFEST
# Version: @ViewBag.Version
CACHE:
#Script Files
@foreach(var jsFile in Url.GetJsFiles())
{
@string.Format("{0}{1}\r\n", "http://192.168.55.127", Url.Content(jsFile))
}
#Style Sheets
@foreach(var cssFile in Url.GetCssFiles())
{
@string.Format("{0}{1}\r\n", "http://192.168.55.127", Url.Content(cssFile))
}
#Images
@foreach(var imageFile in Url.GetImageFiles())
{
@string.Format("{0}{1}\r\n", "http://192.168.55.127", Url.Content(imageFile))
}
#HTML Pages
@string.Format("{0}{1}", "http://192.168.55.127", Url.Content("~/pages/master.htm"))
@string.Format("{0}{1}", "http://192.168.55.127", Url.Content("~/pages/home.htm"))
@string.Format("{0}{1}", "http://192.168.55.127", Url.Content("~/pages/options.htm"))
NETWORK:
*
इस तरह के रूप में पथ का परिणाम है।
मैं पूर्ण पथ भी का उपयोग कर मैनिफ़ेस्ट फ़ाइल संदर्भित किया है:
<html manifest="http://192.168.55.127/mywebsite/manifest">
जो लगता है, ठीक होने के लिए के रूप में जब मैं क्रोम में साइट को लोड और डेवलपर कंसोल का निरीक्षण, यह प्रतीत होता है सब कैश करने के लिए बिना किसी त्रुटि को फेंकने वाली फाइलें। अगर मैं http://192.168.55.127/mywebsite/manifest पर नेविगेट करता हूं तो यह मैनिफेस्ट परोसता है क्योंकि मैं इसे देखने की अपेक्षा करता हूं।
वेबसाइट सामान्य नेविगेशन का उपयोग नहीं करती है, इसके बजाय यह हैश टुकड़ों का उपयोग करके नेविगेट करता है - इसलिए घर पर नेविगेट करने के लिए url master.htm # home होगा या विकल्पों के लिए यह master.html # विकल्प होगा। यह हैश परिवर्तन जावास्क्रिप्ट द्वारा उठाया गया है और यह पृष्ठ को AJAX का उपयोग कर मास्टर में एक div कंटेनर में लोड करता है, अधिक विशेष रूप से यह ऐसा करने के लिए jQuery में 'लोड' विधि का उपयोग करता है।
यह सभी ऑफलाइन मोड में नहीं होने पर ठीक काम करता है, और नेविगेट करते समय क्रोम में नेटवर्क टैब को देखते समय, अनुरोध यूआरएल सही है और यह वही यूआरएल है जो मैनिफेस्ट फ़ाइल में सूचीबद्ध है। एकमात्र चीज जो मैं सोच सकता हूं वह यह है कि ऑफलाइन मोड AJAX अनुरोध के लिए काम नहीं करता है, लेकिन मैं इस धारणा के तहत था कि यह वही काम करता था।
मैं सभी इतिहास को साफ़ करके, वेबसाइट होम पेज पर ब्राउज़ करके, ऑफ़लाइन मोड को सक्षम करने, फिर विकल्प पृष्ठ पर नेविगेट करने का प्रयास करके फ़ायरफ़ॉक्स (संस्करण 9.0) का उपयोग करके ऑफ़लाइन मोड का परीक्षण कर रहा हूं। फ़ायरबग में मुझे विकल्प पृष्ठ के सही यूआरएल के लिए एक जीईटी अनुरोध दिखाई देता है लेकिन यह कभी वापस नहीं आता है, यह भी त्रुटि नहीं करता है। लोडिंग व्हील (फायरबग में नेट टैब में अनुरोध के बगल में) बस चालू रहता है जैसे कि यह अभी भी लोड हो रहा है। मैंने इसे ओपेरा 11.60 में भी कोशिश की (क्योंकि इसमें ऑफ़लाइन मोड भी है) और इसी तरह की चीज होती है।
किसी के पास कोई भी विचार है कि मैं क्या गलत कर रहा हूं? क्या मुझे कुछ स्पष्ट या गलत समझा गया है कि मेनिफेस्ट को कैसे काम करना चाहिए? कोई भी सुझाव प्रशंसनीय होगा।