是否有一种方法来设置缓存控制元数据,同时将文件放入谷歌云存储使用谷歌云存储适配器Flysystem?
我的所有文件都公开在bucket中,但有时我需要更新一些文件,之后我仍然会看到旧文件。一般来说,我认为这是可能的,但我没有看到一种通过Flysystem实现这一点的方法,我们在任何地方都使用它。
有几种方法可以做到这一点
>
手动在GSC sonsole上(每个文件中的编辑元数据)-如果您有大量的文件,则糟糕的解决方案
使用gsutil上传
gsutil -m -D -h Cache-Control:"Cache-Control:public, max-age=31536000" cp -r <path to your folder> gs://yourbucketname/optionalfolder/
更新元引用
gsutil -m setmeta -h "Content-Type:text/html" \
-h "Cache-Control:public, max-age=3600" \
-h "Content-Disposition" gs://bucket/*.html
使用API上传(PHP、Nodejs、Java、GO等)请参阅SDK文档-每种语言都有很多示例。
创建Google负载均衡器并设置自定义元字段“缓存控制”:“public,max age=3600”。在这种情况下,您将拥有自己的CDN域名和灵活的设置
[最佳选项]-创建并部署触发器脚本,该脚本将设置meta(或任何您想要的内容)https://googleapis.dev/nodejs/storage/latest/File.html)上传后立即(google.storage.object.finalize事件)
创建包含两个文件索引的新文件夹。js和软件包。json
index.js
enter const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
exports.prepare = (file, context) => {
console.log("prepare: set cache control:" + file.name);
storage.bucket(file.bucket).file(file.name).setMetadata({cacheControl: 'public, max-age=31536000'});
};
包裹json
{
"dependencies": {
"@google-cloud/storage": ">=5.8.0"
}
}
并分两步部署此功能
>
gcloud init
部署(它将要求先启用api-遵循说明)
gcloud functions deploy prepare \
--runtime nodejs12 \
--trigger-resource gs://yourbacketname \
--trigger-event google.storage.object.finalize
您可以在Google云存储对象上的Set Cache-Control php客户端的回复中找到设置缓存控制的PHP示例。
Flysystem能够设置适配器配置。要为GCP存储桶设置缓存控制标头,可以使用下一步:
/** @var FilesystemInterface $storage */
$storage->put($path, $contents, [
'metadata' => [
'cacheControl' => 'no-cache,max-age=0'
]
]);
此外,您还可以在GCP控制台中设置云功能,以便在对象保存到桶中时设置头
注:在2.0.3以前有bug,请下载最新版本的CI。 CodeIgniter提供了多种目前业界流行的快速动态缓存组件的封装类。除了基于纯文本的缓存(文件缓存)外,其他缓存组件均需对服务器环境进行正确配置才能使用,否则程序会抛出致命异常(Fatal Exception)错误。 目录 用法举例 函数速查 支持的缓存适配器 Alternative PHP Cache (APC) 缓存 纯文本缓存 Mem
32.6 配置缓存存储 开箱即用,缓存抽象提供了多种存储集成。要使用它们,需要简单地声明一个适当的CacheManager - 一个控制和管理Caches,可用于检索这些存储。 32.6.1 JDK ConcurrentMap-based Cache 基于JDK的Cache实现位于org.springframework.cache.concurrent包下。它允许使用ConcurrentHashM
我们使用签名的URL从浏览器上传。我还不知道如何在上传时设置cache-control头。 我们使用gcloud-node库对URL进行签名:
我试图理解DirectByteBuffer如何在Linux上工作,并编写了以下在strace下运行的非常简单的程序: 实际上,我期望一些mmap或sys\u brk系统调用直接从操作系统分配内存,但实际上它只是设置请求页面的读写保护。我的意思是: 这似乎是分配直接缓冲区比分配堆缓冲区慢的原因,因为每次分配都需要系统调用。 如果我错了,请纠正我,但是堆缓冲区分配(如果发生在TLAB内部)相当于返回一
使用 rax-plugin-pwa 插件,可以方便快捷的使用 Service Worker 控制缓存,以获得更快的加载速度。 首先,安装 build-plugin-rax-pwa 插件依赖: $ npm install build-plugin-rax-pwa --save 在工程配置 build.json 中添加 pwa 插件并配置缓存目标: { "plugins": [ [