标签: browser-cache

HTML5 中没有缓存

在 HTML4 中,我们使用了类似的东西

    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
    <meta http-equiv="Expires" content="Thu, 01 Jan 1970 00:00:00 GMT" />
Run Code Online (Sandbox Code Playgroud)

让浏览器不缓存页面。

我应该在 HTML5 中使用什么来让浏览器不缓存我的页面。我根本不想缓存任何页面

我见过一些关于

    <html manifest="example.appcache">
      ...
    </html>
Run Code Online (Sandbox Code Playgroud)

但是为了让浏览器不缓存任何内容,在整个 Web 应用程序中指定所有页面似乎需要做很多工作。

有没有更简单的方法?

如果我从 html 标记中省略清单部分,是否会使浏览器不缓存任何内容?IE

    <html>
      ...
    </html>
Run Code Online (Sandbox Code Playgroud)

或者将其视为可以缓存所有内容?

html caching browser-cache cache-manifest

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

Asp.Net - ClientCache - 是否会因文件类型而异?

我一直在查看,并在我目前正在进行的开发项目中实现了客户端缓存。

当我使用 Asp.Net 时,我已经使用以下代码直接更新了 web.config 文件:

<staticContent>
  <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
Run Code Online (Sandbox Code Playgroud)

我还实现了一个“指纹”解决方案,它允许我自动使缓存中的 CSS 和脚本文件过期。

但是,我开始考虑如果图像更改会怎样 - 假设它被修改并重新上传而没有被重命名。在这种情况下,我不一定希望浏览器继续缓存图像的旧版本长达一年。

因此,问题是可以使用 web.config 静态内容部分为不同的文件类型设置不同的缓存持续时间吗?

asp.net iis caching web-config browser-cache

6
推荐指数
1
解决办法
1036
查看次数

CORS 预检响应包括 Vary:Origin 和 Access-Control-Max-Age?

我想知道浏览器如何处理包含Vary: OriginAccess-Control-Max-Age标头的CORS 预检响应。

本声明来自https://www.w3.org/TR/cors/

希望使自己能够与多个源共享但不以“*”统一响应的资源必须在实践中动态生成 Access-Control-Allow-Origin 标头以响应它们希望允许的每个请求。因此,此类资源的作者应发送 Vary: Origin HTTP 标头或提供其他适当的控制指令以防止缓存此类响应,如果跨源重用可能会不准确

从这个声明我明白Vary: Origin会告诉浏览器阻止预检响应的缓存(如果 allow-origin: * not used)

Access-Control-Max-Age将告诉浏览器将缓存预检响应一段时间。

问题:

  1. 如果预检响应中存在两个标头,它是否有效?

  2. 如果响应包含这两个标头,浏览器如何处理预检响应?

谢谢!

cross-domain browser-cache cors preflight

6
推荐指数
1
解决办法
1167
查看次数

部署新版本时清除浏览器缓存

我有一个ASP.Net MVC + angular web 应用程序。大约有 500 多个用户正在使用该应用程序。

问题是每当我们进行新的发布/发布时,我们都必须让用户清除他们的浏览器缓存。这对用户来说很烦人。

其他网站(例如 facebook 等)在更新其应用程序/站点时如何管理浏览器缓存,因为我们不会经常清除浏览器缓存。

当有新版本时,有没有办法自动清除浏览器缓存。

javascript asp.net browser-cache angularjs

6
推荐指数
1
解决办法
4410
查看次数

ReactJS:如何防止浏览器缓存静态文件?

我正在使用 ReactJS 处理我的项目,并create-react-app用于创建我的应用程序。构建项目后,我使用我的服务器为build文件夹提供服务。当我更新我的应用程序时,用户的浏览器仍然使用我应用程序的旧版本,因为它缓存了静态文件(js、css)。那么有什么办法可以防止浏览器缓存静态文件呢?谢谢 !

caching static-files browser-cache reactjs create-react-app

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

为角度应用程序缓存资产文件夹中的静态文件(图像、pdf、png 等)?

我们的应用程序是使用 angular-cli(版本:7.0.2)和 angular(版本:7.0.0)开发的。我们的图像文件很少,pdf 保存在资产文件夹中。每 3 个月发布一次应用程序的每个版本,这些文件都会发生变化。

  • 为资产文件夹中的所有文件实现缓存破坏的最佳方法是什么?
  • 是否有一种通用技术可以添加到客户端应用程序以在访问时加载资产文件夹中所有文件中的最新文件?webpack.config.js(使用angular-cli工具创建项目时生成的文件)中是否可以添加任何配置?

我通读了此链接中提到的各种技术:使用同一网址中的新图片刷新图片

不确定哪个是最好的解决方案。任何关于如何实现缓存破坏的建议/代码片段表示赞赏。

browser-cache webpack angular-cli angular angular7

6
推荐指数
1
解决办法
3454
查看次数

webpack 块和 vue.js 组件的浏览器缓存问题

问题

我的缓存 Vue.js 组件有问题,我无法在我的设备上重现这个问题,但每次客户端更新我们都会让用户抱怨接口损坏,只有清除浏览器缓存才有帮助。

我使用 Laravel + Vue.js 和它的多页应用程序。

战略

app.js 中包含的一个文件中描述的所有组件,它看起来像这样:

Vue.component('task-feed', () => import('./components/task/task-feed'/* webpackChunkName: "/js/components/task-feed" */));
Vue.component('task-item', () => import('./components/task/task-item'/* webpackChunkName: "/js/components/task-item" */));
Run Code Online (Sandbox Code Playgroud)

有 vue.js 异步组件。

然后我像这样配置了 webpack.mix:

let mix = require('laravel-mix');
const webpack = require('webpack');
const ChunkManifestPlugin = require('chunk-manifest-webpack-plugin');
const WebpackChunkHash = require('webpack-chunk-hash');
mix.disableNotifications();
let config = {
    watchOptions: {
        ignored: /node_modules/
    },
    resolve: {
        alias: {
            'vue$': mix.inProduction() ? 'vue/dist/vue.runtime.min.js' : 'vue/dist/vue.runtime.js',
        }
    },
    output: {
        chunkFilename: mix.inProduction() ? '[name].[chunkhash].js' : '[name].js',
    },
    plugins: [ …
Run Code Online (Sandbox Code Playgroud)

javascript browser-cache webpack vue.js laravel-mix

6
推荐指数
1
解决办法
4631
查看次数

浏览器加载 index.html 的缓存版本 - angular 7

我有一个在 python 服务器上运行的 angular 7 应用程序,我们正在使用 angular-cli 构建项目文件。在构建时,我正在使用以下命令设置缓存突发选项。

ng build --prod --build-optimizer --aot --output-hashing=all

output-hashing=all 将根据角度文档处理缓存突发。虽然我提供了这个标志,但在部署我们的应用程序文件名后附加了哈希值(styles.a5169d3732258e921e2c.css、main.8dc0644c88c4fbf67797.js)但 index.html 文件总是显示缓存版本。

我想在客户端缓存除 index.html 之外的所有文件。我将如何做到这一点?

browser-cache angular-cli angular7

6
推荐指数
1
解决办法
7199
查看次数

如何阻止 PWA 缓存我的网站

我有一个简单的 PWA,我从 Github 页面更新和更改。

当我更新网站时,它不会显示在使用该网站的设备上,因为(至少我认为)它被缓存了。我没有任何服务人员来缓存该站点。

即使是网站的正常刷新(使用所有这些

不刷新它并显示更改。在 iOS 上,我必须手动进入设置并清除网站数据以查看更改。

我怎样才能解决这个问题?

html javascript browser-cache progressive-web-apps

6
推荐指数
1
解决办法
6139
查看次数

我应该将 Cache-Control: no-cache 添加到我的 REST API 的 GET 端点吗?

创建使用 POST/PUT 的 REST API 很简单。它们是非幂等的,因此默认情况下不会被浏览器缓存。

但是,在创建 GET 端点时,事情变得更棘手了。我担心浏览器(或特定浏览器)在默认情况下会尝试缓存 GET 请求,而我最终会得到陈旧的数据。

这种对激进缓存的恐惧是真的吗?

让我们以端点为例GET /articles/123/comments

尽管这个端点是一个 GET 端点,但每个请求都可以返回不同的内容,因为文章的评论被提交。

  • 这会被缓存吗?
  • 它会被特定的攻击性浏览器缓存吗?

假设没有与响应提供的缓存相关的标头。

content-length: 2518
content-type: application/json
date: Thu, 17 Oct 2019 07:51:59 GMT
status: 200

Run Code Online (Sandbox Code Playgroud)

避免 GET 请求的陈旧数据的最佳实践是什么?

似乎有不同的策略来解决这个问题,但最好的方法是什么?

  • 通过唯一的查询字符串缓存破坏我的 GET 调用?

    例如。 GET /articles/123/comments?nonce=12312310980923409

  • 添加Cache-Control: no-cache(这会一直受到尊重吗?)

  • 添加ETag: xyz_HASH_OF_MY_LIST_OF_COMMENTS

  • 添加Cache-Control: max-age=0(禁用缓存)

  • 添加Cache-Control: max-age=60(以减少缓存的最大持续时间)

  • 只是不要担心并假设没有像ETag, Last-ModifiedGET 请求这样的标头不会被任何浏览器缓存?

caching http http-caching browser-cache offline-caching

6
推荐指数
1
解决办法
1247
查看次数