Web applications 仅在webapps中缓存必要的图像

Web applications 仅在webapps中缓存必要的图像,web-applications,cache-manifest,memory-optimization,Web Applications,Cache Manifest,Memory Optimization,我在index.php的标题部分有这个: <link rel="apple-touch-startup-image" href="images/screenLD.png" media="(device-width:320px)" /><!--iPod/iPhone Portrait LD 320x460--> <link rel="apple-touch-startup-image" href="images/screenHD.png" media="(device

我在
index.php
的标题部分有这个:

<link rel="apple-touch-startup-image" href="images/screenLD.png" media="(device-width:320px)" /><!--iPod/iPhone Portrait LD 320x460-->
<link rel="apple-touch-startup-image" href="images/screenHD.png" media="(device-width:320px)and(-webkit-device-pixel-ratio:2)" /><!--iPod/iPhone Portrait HD 640x920-->
<link rel="apple-touch-startup-image" href="images/screenPortraitLD.png" media="(device-width:768px)and(orientation:portrait)" /><!--iPad Portrait LD 768x1004-->
<link rel="apple-touch-startup-image" href="images/screenLandscapeLD.png" media="(device-width:768px)and(orientation:landscape)" /><!--iPad Landscape LD 748x1024-->
<link rel="apple-touch-startup-image" href="images/screenPortraitHD.png" media="(device-width:1536px)and(orientation:portrait)and(-webkit-device-pixel-ratio:2)" /><!--iPad Portrait HD 1536x2008-->
<link rel="apple-touch-startup-image" href="images/screenLandscapeHD.png" media="(device-width:1536px)and(orientation:landscape)and(-webkit-device-pixel-ratio:2)" /><!--iPad Landscape HD 1496x2048-->
但我们很容易理解,iPhone用户需要缓存其他5张无用的大图像

我如何才能让他只缓存他需要的图像



顺便说一句,对于那些想要在每个苹果设备上都能运行的闪屏代码的人来说,我的代码是完美的。

使用python/php脚本,检查设备的用户代理字符串。然后为不同版本的
cache.manifest
提供特定设备所需的缓存列表。如果用户代理字符串格式不正确或未知,请为上面包含所有内容的字符串提供服务

例如:

  • 创建一个脚本,例如:
    cache\u manifest.php
  • 清理$\u服务器['HTTP\u用户\u代理']
  • 从用户代理字符串中查找设备的名称
  • 输出(通过“
    echo
    ”)给定设备的LD/HD文件。用户代理字符串不允许您准确确定设备是否有视网膜显示器
  • 通过
    RewriteRule
    将流量从
    /cache.manifest
    重定向到
    cache\u manifest.php
  • Htaccess
    文件如下所示:

    RewriteEngine On
    RewriteRule ^cache\.manifest$ /cache_manifest.php [L]
    
    iPhone用户代理字符串如下所示:

    Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5
    
    Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5
    
    iPad用户代理字符串如下所示:

    Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5
    
    Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5
    

    实际上,您不需要缓存apple touch启动图像标签中使用的图像。设备将在第一次运行时(在缓存任何内容之前)下载所需的映像。当它们被缓存时,就不再需要它们了。

    将使用
    .htaccess
    文件将
    cache.manifest
    的请求路由到基于用户代理生成清单的脚本。您还可以使用
    .htaccess
    根据用户代理路由到不同的
    缓存.manifest
    文件。是。因为每次退出应用并打开它时,启动映像都会出现1或2秒钟。(经过大量测试,我发现如果清单中没有任何可用的内容,应用程序将显示
    无互联网连接
    ,然后退出应用程序)。当您将启动图像保存到桌面时,它将作为web应用程序的一部分保存。在我的应用程序中,缓存清单中没有图像,但当设备离线时,它们会显示出来。启动图像和图标图像是“保存到主屏幕”过程的一部分,清单中不需要它们(至少根据我的测试)