【问题标题】:Prevent caching of .css files in UIWebView loaded from disk防止在从磁盘加载的 UIWebView 中缓存 .css 文件
【发布时间】:2011-04-02 17:54:59
【问题描述】:

在我正在处理的 iPad 项目中,我在应用程序内部有一个 UIWebView,它显示了一个链接到 .css 文件的 .html 文件,即

<link rel="stylesheet" href="style.css" type="text/css">

这些文件本地存储在 iPad 上,但从远程服务器获取。我注意到UIWebView 或多或少无限期地缓存 .css 文件,并且在我更改它时拒绝加载新文件。我曾经更改文件的名称只是为了让它重置,但从长远来看这是不可接受的。

有没有办法防止在UIWebView 中缓存 CSS 文件?或者更好的是,有没有办法说明什么时候缓存什么时候不缓存?

【问题讨论】:

    标签: iphone css caching uiwebview


    【解决方案1】:

    是的。

    将你的行改为:

    <link rel="stylesheet" href="style.css?version=1" type="text/css">
    

    每次更新样式表时,都要更改版本。浏览器会因为查询字符串而认为它是一个不同的页面,你的服务器会忽略它。

    如果您使用的是 PHP 等服务器端语言,您还可以执行以下操作:

    <link rel="stylesheet" href="style.css?version=<?php echo time(); ?>" type="text/css">
    

    这将在您每次刷新时更改版本,从而停止所有缓存。

    【讨论】:

    • 这确实是个好主意!但是,如果我说我有 15 个 .html 文件,每个文件都有自己的 行,这仍然不能解决问题。如果只有一个文件...
    • 有 15 个文件具有完全相同的 标签是代码重复的标志。删除重复,然后更改版本将是微不足道的。
    • iPad 的本地文件中没有服务器端语言 - 只有 HTML、CSS 和 JavaScript。 @Kelle,您可以使用来自 Objective-C 的 @Stargazer712 的时间建议。像这样的东西:[htmlString stringByReplacingOccurrencesOfString:@"style.css" withString:[NSString stringWithFormat:@"style.css?time=%@", [[NSDate date] description]]
    • Stargazer712:为什么有多个 .html 文件,每个文件都链接到代码中的相同 CSS 文件重复?复制会将 CSS 直接放入 HTML 文件中的样式标记中。这更像是从一堆对象中的同一个类继承。迈克尔:是的,事实上我选择了那条路。谢谢你们的意见。
    • 您回答了自己的问题。进行这样的更改需要更改 15 个文件。 那是重复。听起来您无法访问服务器端语言,因此这可能无法快速解决,但如果您确实可以访问服务器端语言,则需要考虑使用模板或母版页(取决于当然是语言)。
    【解决方案2】:

    保持 HTML 标记和 iOS 代码隔离的更好方法是

    [[NSURLCache sharedURLCache] removeCachedResponseForRequest:yourRequest];
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多