我正在尝试将iPhone缓存为HTML5 Web应用程序,以便在使用时可以脱机。 Web应用程序位于www.prism.gatech.edu/~gtg880f,我没有成功。我借用它只是为了试一试。
只有3个文件: 的index.html index.js 的style.css
我修改了index.html以包含<html manifest="offline2.manifest">
和<meta content="yes" name="apple-mobile-web-app-capable" />
以便它可以全屏显示为离线网络应用。
我的offline2.manifest文件如下:
CACHE MANIFEST
index.html
index.js
style.css
debug.js
NETWORK:
CACHE:
PS:debug.js
来自Jonathan Stark。
当我使用firefox时,它会正确缓存它,我可以离线使用Web应用程序。但是,它在chrome和safari中都失败了。
在Chrome中,我收到以下调试消息:
Application Cache Checking event
Application Cache Error event: Invalid manifest mime type (text/plain) http://www.prism.gatech.edu/~gtg880f/offline2.manifest
我用谷歌搜索了明显的mime类型,它提到了一些关于.htaccess
的内容,什么不是,我实际上不太确定这意味着什么。按照说明操作,我转到etc/apache2/httpd.conf
并将ALLOWOVERIDE ALL
从无。
这似乎没有解决任何问题,但我仍然收到相同的错误消息。
简而言之,我希望能够在iPhone上使用我的Safari浏览器访问www.prism.gatech.edu/~gtg880f并将其保存到我的主屏幕。然后,关闭3G和wifi,仍然使用网络应用程序。
编辑:尝试了roryf的第一个答案:
仍然无法正常工作。我想编辑httpd.conf
中的/etc/apache2/httpd.conf
文件吗?我正在使用Mac OSX。我在本节下添加了
<IfModule mime_module>
#
# TypesConfig points to the file containing the list of mappings from
# filename extension to MIME-type.
#
TypesConfig /private/etc/apache2/mime.types
#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/cache-manifest manifest # added to allow HTML5 offline caching
答案 0 :(得分:1)
我刚刚检查过,看起来您的清单文件仍然以text / plain的形式提供。以下是您可以采取的修复步骤。
在清单文件所在的目录中创建一个名为.htaccess
的新文件(有时,创建名称以点开头的文件的唯一方法是在命令行中执行此操作)
编辑文件并在其中插入以下行:
AddType text/cache-manifest manifest
转到http://web-sniffer.net/并插入清单文件的路径,以确认它是使用正确的mime类型提供的。您需要在此处使用的路径是http://www.prism.gatech.edu/~gtg880f/offline2.manifest
答案 1 :(得分:1)
尝试将文件扩展名更改为其他内容。
我遇到了同样的问题,当我将其保存为cache.manifesto时 - 将.htaccess更改为
AddType text/cache-manifest .manifesto
并将其作为
指向html文件<html manifest="cache.manifesto" >
它很好。
答案 2 :(得分:1)
这是我在mac
中使用我的离线存储所做的工作打开httpd.conf
备份。
找到“AllowOverride”并将值从“无”更改为“全部”
靠近第198行的地方
Options Indexes FollowSymLinks
AllowOverride None
答案 3 :(得分:0)
看起来你需要在Apache配置中将.manifest文件的MIME类型设置为text/cache-manifest
,这可能就是你读到的.htaccess(一种方法)。
将此添加到.htaccess文件应该有效:
AddType text/cache-manifest manifest
答案 4 :(得分:0)
我的工作网络应用程序剪辑复制了.manifest文件的CACHE:部分中的文件名。像这样:
CACHE MANIFEST
index.html
index.js
style.css
debug.js
CACHE:
index.html
index.js
style.css
debug.js
NETWORK:
我还将它包含在与清单相同的Web服务器目录中的.htaccess文件中:
AddType text/cache-manifest .manifest manifest
答案 5 :(得分:0)
我也在iPhone上调试离线网络应用程序时遇到了同样的问题。该应用在Chrome和Safari中都表现正常(适用于Windows)。 iPhone上的重启最终成功了。希望这会有所帮助。
答案 6 :(得分:0)
或者,您可以简单地创建一个名为:manifest.php的文件并将其放入其中;
<?php
header('Content-Type: text/cache-manifest');
echo "CACHE MANIFEST\n\n";
echo "CACHE:\n";
$hashes = "";
$dir = new RecursiveDirectoryIterator(".");
foreach(new RecursiveIteratorIterator($dir) as $file) {
if ($file->IsFile() &&
$file != "./manifest.php" &&
substr($file->getFilename(), 0, 1) != ".") {
echo $file . "\n";
$hashes .= md5_file($file);
}
}
echo "\n# Hash: " . md5($hashes) . "\n";
?>