标签: offline-caching

HTML5离线缓存

我已经阅读了以下Mozilla Developer 文章,该文章解释了如何在Web应用程序中实现HTML 5离线资源缓存.

我已尝试在本地测试:将mime类型添加到列表中,创建清单文件,将我的doctype更改为HTML 5 doctype,指定清单属性和HTML元素上的正确路径 - 但我仍然不请参阅Firefox正在使用的清单文件.我还检查了Apache上的访问日志,但没有看到任何对清单文件的请求.

有没有人给它一个刺戳并取得了成功?我只是不知道如何进一步解决问题,并欢迎任何建议.

html5 offline-caching

21
推荐指数
1
解决办法
2万
查看次数

如何在HTML5缓存清单中指定通配符以加载目录中的所有图像?

我在应用程序中使用的文件夹中有很多图像.当使用缓存清单时,如果我可以指定一个通配符来加载要缓存的特定目录中的所有图像或文件,则更容易维护.

例如

CACHE MANIFEST
# 2011-11-3-v0.1.8
#--------------------------------
# Pages
#--------------------------------
../index.html
../edit.html
#--------------------------------
# JavaScript
#--------------------------------
../js/jquery.js
../js/main.js
#--------------------------------
# Images
#--------------------------------
../img/*.png
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?在一些浏览器中尝试过它,../img/*但它似乎不起作用.

html5 caching manifest offline-caching offlineapps

21
推荐指数
2
解决办法
2万
查看次数

如何在Android应用程序中以在线和离线模式加载或检索网页?

我需要在android设备的内部或外部内存中加载和检索HTML网页.我需要的是使用web-view在android中下载和检索网页.

有许多类似于下载或保存网页的重复问题.但是没有一个答案对我有帮助.引导我!

提前致谢.

html android webview offline-caching android-external-storage

18
推荐指数
2
解决办法
2513
查看次数

地图的离线缓存

我非常需要为我的应用做离线地图,因为它主要是为泰国制作的,因为泰国通常很难连接互联网.我现在正在使用OpenStreetMap我的MKTileOverlay但是在实现它以供离线使用时遇到问题.我找到了一个教给子类的教程MKTileOverlay.所以,在我ViewController的地图上我有:

 - (void)viewWillAppear:(BOOL)animated {

    CLLocationCoordinate2D coord = {.latitude =  15.8700320, .longitude =  100.9925410};
    MKCoordinateSpan span = {.latitudeDelta =  3, .longitudeDelta =  3};
    MKCoordinateRegion region = {coord, span};
    [mapView setRegion:region];
}

- (void)viewDidLoad {
    [super viewDidLoad];

    self.title = @"Map";
    NSString *template = @"http://tile.openstreetmap.org/{z}/{x}/{y}.png";
    self.overlay = [[XXTileOverlay alloc] initWithURLTemplate:template];
    self.overlay.canReplaceMapContent = YES;
    [mapView addOverlay:self.overlay level:MKOverlayLevelAboveLabels];
}

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id)overlay {

    return [[MKTileOverlayRenderer alloc] initWithTileOverlay:overlay];
}
Run Code Online (Sandbox Code Playgroud)

在我的子类中MKTileOverlay,我有:

- (NSURL *)URLForTilePath:(MKTileOverlayPath)path { …
Run Code Online (Sandbox Code Playgroud)

openstreetmap mapkit offline-caching ios mktileoverlay

17
推荐指数
1
解决办法
1297
查看次数

HTML5网络应用程序在iOS中添加到主屏幕时不缓存

要明确的是,Web应用程序正在缓存,并且在Mobile Safari中可以正常脱机工作.

问题是它被添加到iPhone 4s和iPad 2的主屏幕上,两者都运行iOS 6.0.1.它将无法脱机工作并且在连接到互联网时出现网络错误,即"无法打开MYWEBAPP.由于未连接到互联网,因此无法打开MYWEBAPP"

我已经调试了几个小时,似乎无法找到解决方案.我没有收到控制台中的任何错误,我正在运行Jonathan Stark的调试代码

我已经在桌面Safari,Chrome和Firefox的在线/离线开发者工具中测试了该应用.以及Safari中使用设备的Web Inspector.iPhone或iPad上的结果相同.它们将缓存Web应用程序并将在Mobile Safari中运行,但在添加到主屏幕时则不会.离线或在线都没有错误.

据我所知,我正在使用最佳实践:

  1. 添加了HTML标头: <html manifest="photo.appcache">

    我还尝试使用清单文件的不同名称,包括:cache.manifest和offline.manifest,因为我读到它有所不同,但在我的测试中,只要扩展名是什么名称并不重要. manifest或.appcache,并在.htaccess文件中正确提供.

  2. 添加了正确的MIME类型: AddType text/cache-manifest appcache manifest

    我也试过:AddType text/cache.manifest manifest, AddType text/cache.manifest .manifest manifest,AddType text/cache-manifest .manifest

    我不相信这有效:AddType text/cache.manifest 但我不记得了.在大多数情况下它没关系,我坚持:

    AddType text/cache-manifest appcache清单

    就像HTML5 Mobile Boilerplate中的内容一样.

  3. 添加:

网络:*

到appcache文件.我相信这允许下载所有内容以及使所有链接都能正常工作.

  1. 我已经尝试删除这一行: <meta name="apple-mobile-web-app-capable" content="yes"> 因为我在这里阅读了解决了类似于我的问题,但我可以确认它在我的测试中不起作用.按主屏幕图标时删除此行或将内容设置为"否"将重定向到Mobile Safari而不是全屏打开.

我已经把它缩小到它是iOS 6中的一个错误(我实际上使用的是iOS 6.0.1),因为我知道现在已经将数据分离为浏览器中的Web应用程序和添加到主屏幕的数据.我在这里发布这个问题,看看是否有其他开发人员遇到了同样的问题.

web-applications manifest mobile-safari offline-caching ios

15
推荐指数
1
解决办法
1万
查看次数

15
推荐指数
1
解决办法
4958
查看次数

使用retrofit2和OkHttp3时出现此错误.无法解析主机"<host-name>":没有与主机名关联的地址

我正在使用改造2和OkHttp3从服务器请求数据.我刚刚添加了一个离线缓存代码,但它没有按预期工作.我收到错误"无法解析主机"<>":没有与主机名关联的地址."

当它试图从缓存中获取检索数据时(没有互联网连接时)会发生这种情况.下面是一段代码片段.

public static Interceptor provideCacheInterceptor() {
    return new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Response response = chain.proceed(chain.request());

            // re-write response header to force use of cache
            CacheControl cacheControl = new CacheControl.Builder()
                    .maxAge(2, TimeUnit.MINUTES)
                    .build();

            return response.newBuilder()
                    .header(CACHE_CONTROL, cacheControl.toString())
                    .build();
        }
    };
}

public static Interceptor provideOfflineCacheInterceptor() {
    return new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();

            if (!hasNetwork) {
                CacheControl cacheControl = new CacheControl.Builder()
                        .onlyIfCached()
                        .maxStale(7, TimeUnit.DAYS) …
Run Code Online (Sandbox Code Playgroud)

android offline-caching okhttp retrofit2 okhttp3

15
推荐指数
1
解决办法
6800
查看次数

在Angular 6 Service Worker中通过新鲜度缓存资产

我正在尝试将Angular Service Worker集成到现有项目中.如果我理解正确,有两种情况如何在Angular SW中缓存数据.可以预取或延迟更新资产数据并缓存特定的API调用和其他XHR请求.

我想要实现的是首先通过网络加载特定资产,如果请求进入超时或无法访问,它将通过缓存提供.就像freshness缓存API调用时的策略一样.但似乎没有办法为JS文件配置这种新鲜度加载机制,该文件作为Angular项目中的资源加载.我已经设置了一个测试项目示例:https://github.com/philipp-schaerer-lambdait/angular-service-worker-test

下面的示例是一个标准的Angular App,它不包含我正在使用的实际项目,但显示了我想要缓存的元素,结构如下所示:

\_ Angular root  
 |_ src/
   |_ index.html <----------- links to excluded_asset.js
   |_ app/
   |_ assets/
     |_ excluded_asset.js <-- this one is excluded in ngsw-config.json
     |_ included_asset.js
     |_ ...
Run Code Online (Sandbox Code Playgroud)

这里有相关配置:

NGSW-config.json

{
    "index": "/index.html",
    "assetGroups": [
        {
            "name": "app",
            "installMode": "prefetch",
            "resources": {
                "files": ["/favicon.ico", "/index.html", "/*.css", "/*.js"]
            }
        },
        {
            "name": "assets",
            "installMode": "lazy",
            "updateMode": "prefetch",
            "resources": {
                "files": ["/assets/**", "!/assets/excluded_asset.js"]
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

是否有可能freshness通过使用 …

caching offline-caching service-worker angular

15
推荐指数
2
解决办法
3500
查看次数

移动Safari中的HTML5离线视频缓存

我似乎无法让iPhone或iPad上的Safari离线缓存视频.当我离线时,其他所有内容都会被缓存.视频文件显然在清单中,但我只是得到了破碎的箭头.在Safari桌面上正常工作.有线索吗?我已经尝试了对象嵌入和视频标签.

iphone html5 offline-caching html5-video

14
推荐指数
1
解决办法
1万
查看次数

如何使用通用映像加载器脱机缓存?

是否可以使用通用图像加载器来脱机?如果可能,如何使用它?使用配置?如何手动设置下载目录?

内存不足erroron加载巨大的图像:

我的代码:

DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
            .cacheOnDisc(true).cacheInMemory(true)
            .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
            .displayer(new FadeInBitmapDisplayer(300)).build();
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(G.appConfigs.context)
            .defaultDisplayImageOptions(defaultOptions)
            .memoryCacheExtraOptions(480, 800) // default = device screen dimensions
            .diskCacheExtraOptions(480, 800, null)
            .memoryCache(new WeakMemoryCache())
            .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
            .memoryCacheSize(2 * 1024 * 1024)
            .discCacheSize(300 * 1024 * 1024)
            .build();
    ImageLoader.getInstance().init(config);
    // END - UNIVERSAL IMAGE LOADER SETUP

    ImageLoader imageLoader = ImageLoader.getInstance();

        DisplayImageOptions options = new DisplayImageOptions.Builder().cacheInMemory(true)
            .cacheOnDisc(true).resetViewBeforeLoading(true)
            .showImageForEmptyUri(R.drawable.no_pic)
            .showImageOnFail(R.drawable.load_failed)
            .showImageOnLoading(R.drawable.img_thumb).build();

    //download and display image from url
    imageLoader.displayImage(imgURL, img, options);
Run Code Online (Sandbox Code Playgroud)

怎么解决?

android offline-caching universal-image-loader

14
推荐指数
1
解决办法
7846
查看次数