我正在尝试使用ASP MVC 3网站获得HTML 5离线应用程序缓存.我得到的问题是,当我尝试在离线模式下导航到页面时,它不起作用.
我正在使用清单文件的操作,以便可以动态生成它,并在视图中指定Resonse.ContentType ="text/cache-manifest".
我已经在IIS本地托管了应用程序,所以我使用http://192.168.55.127/mywebsite/来访问它.
这是我正在使用的清晰视图.它使用剃刀视图引擎,有点乱(硬编码的URL等),而我试图弄清楚什么是错的.
@{
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:
*
Run Code Online (Sandbox Code Playgroud)
这导致如下路径:
http://192.168.55.127/mywebsite/scripts/Libs/jQuery.js
http://192.168.55.127/mywebsite/pages/home.htm
Run Code Online (Sandbox Code Playgroud)
这似乎很好.
我也使用完整路径引用了清单文件:
<html manifest="http://192.168.55.127/mywebsite/manifest">
Run Code Online (Sandbox Code Playgroud)
这似乎没问题,因为当我用chrome加载网站并观察开发者控制台时,它似乎缓存了所有文件而没有抛出任何错误.此外,如果我导航到http://192.168.55.127/mywebsite/manifest, 它会提供清单,因为我希望看到它.
该网站不使用普通导航,而是使用散列片段导航 …
我想使我的Web应用程序(使用laravel构建)可以离线工作...但是我不知道该怎么做!
我正在为静态文件使用“应用程序缓存”,但是我不确定确切如何处理应用程序的动态方面。
该应用程序使用一个数据库,我猜我需要使用localStorage吗?(到目前为止,香港专业教育学院在线阅读)
我基本上只是在寻找某人将我指向正确的方向,因为我很难在网上找到很多关于设置Laravel以便离线使用的信息
谢谢戴夫
我试图让 HTML5 离线存储以一种基本的方式工作。我阅读了有关DiveIntoHTML5的信息,它似乎有道理,但似乎对我不起作用。我想知道是否有人可以帮我调试这个。
基本上我已经为应用程序设置了一个主页,index.htm。所以我的应用程序在网络上http://www.mydomain.com/online/index.htm。用户将访问此页面,在那里他们通常会每天处理所有事情。访问此 URL 将创建一堆缓存文件,以便他们可以访问http://www.mydomain.com/offline并在离线时查看应用程序的工作版本。
在线首页前几行代码是:
<!DOCTYPE html>
<html manifest="cache.manifest">
<head>
...etc
Run Code Online (Sandbox Code Playgroud)
我生成了一个名为“cache.txt”的纯文本文件,并在记事本中向其中添加了以下内容:
CACHE MANIFEST
http://www.mydomain.com/offline/scripts/jquery-1.6.3.min.js
http://www.mydomain.com/offline/scripts/jquery-ui-1.8.16.custom.min.js
http://www.mydomain.com/offline/scripts/modernizr.min.js
http://www.mydomain.com/offline/scripts/json2.min.js
http://www.mydomain.com/offline/scripts/jquery.deserialize.js
http://www.mydomain.com/offline/scripts/jquery.cookie.js
http://www.mydomain.com/offline/scripts/main.js
http://www.mydomain.com/offline/css/main.css
http://www.mydomain.com/offline/css/structure-details.css
http://www.mydomain.com/offline/css/ui-lightness/jquery-ui-1.8.16.custom.css
http://www.mydomain.com/img/header.gif
http://www.mydomain.com/offline/img/bg.png
http://www.mydomain.com/offline/img/header_riser.gif
http://www.mydomain.com/offline/img/logo.png
http://www.mydomain.com/offline/img/offline.png
http://www.mydomain.com/offline/index.htm
Run Code Online (Sandbox Code Playgroud)
然后,我将此文件重命名为“cache.manifest”并将其上传到在线应用程序的根目录(与我的主页处于同一级别),以便可以在http://www.mydomain.com/online上访问它/cache.manifest。
据推测,托管公司已将“文本/缓存清单”的内容类型添加到 IIS 中扩展名为 .manifest 的所有文件中。我认为这是有效的,因为当我在http://www.mydomain.com/online/cache.manifest在 Firefox 中查看文件时,Firebug 告诉我内容类型是:
Content-Type cache-manifest
Run Code Online (Sandbox Code Playgroud)
或者这应该返回“文本/缓存清单”?也许这就是问题所在?
当我查看系统上的离线存储文件夹 (C:\Users\Me\AppData\Local\Mozilla\Firefox\Profiles\b12u6xza.default 时,那里根本没有与此域相关的任何内容。
任何人都可以建议可能出了什么问题 - 因为我有点难住?
出于性能目的,我希望我的一些网页使用已缓存以供离线使用的资源(图像,CSS等),但不要将页面本身缓存,因为内容将动态生成.
一种方法是重构我的页面,以便他们通过AJAX加载动态内容或在LocalStorage中查找.细节可能会有所不同,但从广义上讲,这类似的东西.
如果可能的话,我宁愿找到一种方法来简单地指示浏览器为页面使用缓存资源(同样,图像,CSS等),但不实际缓存(动态生成的)HTML内容本身.
有没有办法用HTML5离线appcache做到这一点?我的印象是答案是"不",因为:
我错了吗?似乎可能有一些棘手(或不那么棘手)的方式.现在我已经输入了它,我想知道NETWORK在appcache清单的部分中明确地包含页面是否可以解决问题.
html5 offline-caching manifest.cache cache-manifest html5-appcache
我今天在androidstudio工作,我的构建开始失败.令我惊讶的是,我丢失了我的互联网连接,无法再构建我的代码.
build.gradle文件包含以下内容:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.3'
}
tasks.withType(Compile) {
options.encoding = "UTF-8"
}
}
apply plugin: 'android-library'
dependencies {
compile files('libs/android-support-v4.jar')
}
...
Run Code Online (Sandbox Code Playgroud)
那么......我如何重新配置我的开发环境,更改我的build.gradle以及做任何其他必要的事情来让android开发脱机.
注意: 编辑问题是为了从存储库中删除mavenLocal(),因为它是为了自己解决这个问题而添加的
我们目前正在构建一个Web应用程序(Django,Ember),我们发现大多数潜在客户都需要对应用程序进行零星的离线访问.
我们需要的不仅仅是"呈现"应用程序,以便用户可以导航,缓存清单中的内容等等(我想我们最终也需要),但我们必须让用户尽可能多地操作,就好像他们是线上.显然有一些功能不可用,但应该可以使用应用程序的基本用法.
也就是说,我希望听到一些关于之前遇到过这种情况的人的想法.我看到这个的方式,我们需要:
1.-检查我们是否经常在线/离线,或让用户指定他们何时离线(如智能手机中的飞行模式).
2.-所有数据都应该转储到IndexedDB中,从那时起我们就使用IndexedDB处理与数据相关的任何事情.
3.-当用户重新联机时,Synch进程必须尝试将数据从脱机用户转储到db online.虽然这可能看起来很危险,但我不希望很多用户同时离线,而其他在线用户正在使用该应用程序,所以我希望这个同步过程不会成为真正的噩梦,我也不会期待有竞争条件.
好吧,显然可以选择创建一个桌面独立应用程序......但我会尽量避免这种情况......
谢谢!
django offline offline-mode offline-caching offline-browsing
我有两台 Ubuntu 16.04 机器。一台已连接到互联网,而另一台则完全离线。我想在离线机器上构建一个Android项目。在线机上,构建成功。因此,我已将整个内容复制.gradle到离线计算机并使用--offline标志运行构建过程。令人惊讶的是它失败了。很多
No cached version of ....
Run Code Online (Sandbox Code Playgroud)
我怀疑这是因为用于为每个.jar、.pom等生成散列的散列算法。我认为散列在一台机器与另一台机器之间是不同的。另请注意,我的用户名和机器名在这两者中是不同的。看起来哈希值与用户名有关。我对吗?是否有一个干净的解决方案可以在离线机器上构建项目?
我正在写一个Android应用程序,我需要在那里有一个离线模式,这意味着我需要从后端下载所有图像,如果我没有互联网连接,我将能够向用户显示它们.我阅读了缓存的官方文档,__CODE__并尝试使用此代码下载:
__CODE__
要加载图像我使用:
__CODE__
看起来它有效,因为我的应用程序占用的空间增加了.但是当我尝试在离线模式下运行我的应用程序时,大多数图像都会被跳过,而在日志中我会看到下一个:
__CODE__
有人遇到过类似的问题吗?
PS当我有网络连接时,它完美无缺.
我正在开发一个由多个客户端使用的应用程序,该应用程序的主要目标是在线使用。但是一个特定的要求是,它也应该能够离线工作(仅适用于紧急情况下的单个客户端和短时间 - 最多 24 小时)。现在我使用 Django REST 框架作为后端和 Jquery/AJAX 前端用于 GET 和 PUT等请求,这些请求在后端更新 PostgreSQL DB。现在互联网上的研究很少表明我应该在前端使用PouchDB和/或在后端使用CouchDB。但我的问题是:
django synchronization offline-caching pouchdb django-rest-framework
我使用Workbox预先缓存呈现应用程序shell所需的资产,包括基本版本index.html.Workbox假定index.html在缓存中可用,否则,页面导航失败,因为我在我的服务工作者中注册了这个:
workbox.routing.registerNavigationRoute('/index.html');
Run Code Online (Sandbox Code Playgroud)
我也在self.skipWaiting()安装监听器中有指令:
self.addEventListener('install', e => {
self.skipWaiting();
});
Run Code Online (Sandbox Code Playgroud)
据我了解,现在有2个install听众:
self.skipWaiting()Workbox的安装监听器失败时是否可以成功?这将导致一个问题状态,即资产未预先缓存但服务工作者已激活.这种情况是否可能,我应该保护它吗?
caching offline-caching service-worker progressive-web-apps workbox