首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodejs上的前端缓存需求

nodejs上的前端缓存需求
EN

Stack Overflow用户
提问于 2014-07-12 09:46:17
回答 1查看 245关注 0票数 0

我试图在我的node.js服务器上实现指纹,我使用的是requirejs,我的主页加载了这样的脚本:

代码语言:javascript
复制
<script src="/public/assets2/scripts/lib/requirejs/require.js"></script>
<script src="/public/assets2/scripts/app/common.js"></script>
<script>
 require.config({baseUrl: '/public/assets2/scripts/lib'});
 require(['app/main']);
</script>

资产被内置到public/assets2目录中。在重新构建时,我希望将requirejs baseUrl更改为哈希版本public/assets2/HASHHASH。因此,需求将请求这样的脚本:public/assets2/HASHHASH/scripts/app.main.js

像这样将散列添加到baseUrl中是个好主意吗?如果我正确理解,我认为这是推荐的方法。

资产仍然是在public/assets2中构建的,而不是在public/assets2/HASHHASH中构建的,所以我需要在这两者之间进行映射,或者将资产实际放置到HASHASH目录中。是否有一个好的库已经这样做了,我如何简单地实现这一点?

编辑

borschik很好,但是需求已经将我的所有资产复制到构建文件夹中,以后它可以在那里请求它们。borchik是对需求的过激行为。但是,需求没有内置的解决方案来破坏缓存。根据我在这里的理解:建议我将所有资产放在一个版本化的文件夹中,并相应地修复我的baseUrl。这是对需求的最简单的修正,而且我甚至不需要从文件中生成散列,每次运行构建任务时,我只会生成一个散列。

我遇到的问题是第三步。

3.配置您的etc服务器(nginx等)返回原始文件,即使您使用散列请求它。

我要求在nodejs上找到一种方便的方法来做这件事。

示例:

获取public/assets2/<hash>/app/main.js

条形散列并返回public/assets2/app/main.js

另一个问题是,即使我只更改了一个文件,每个资产也会被破坏。因此,我想最终的解决方案是将其构建到需求中。

r.js将在优化时与散列对应方复制所有资产。然后在浏览器上,它将请求散列文件urls。这将需要一个清单文件,在优化工具和浏览器上的需求之间。

EN

回答 1

Stack Overflow用户

发布于 2014-07-14 07:05:50

您可以查看罗施克,特别是它的冻结和资源内衬功能。

如果borschik不适合您,那么下面是一些关于如何实现这种机制的理论:

  1. 首先,需要使用咕噜声任务来生成文件的散列。稍后,您将使用它们创建带有散列的urls。
  2. 创建简单的方法,该方法将文件路径作为参数,并在由.build-catalog.json创建的grunt-frontend中进行搜索,以创建和返回特定于散列的url。
  3. 配置您的etc服务器(nginx等)返回原始文件,即使您使用散列请求它。
  4. 使用第二步编写的方法设置所有路径 require.config({ path:{ lib: requireURL(‘/public/assets2 2/requireURL/lib.js’) //将导致:“/public/assets2 2/requireURL/lib”});

但也有一个限制。grunt-frontend只能从文件中计算散列,而不能计算文件夹。您不能设置baseUrl: requireURL('/public/assets2/scripts/lib'),因为所有文件都需要使用相同的散列。

但是文件夹有一个解决办法。您可以向感兴趣的文件夹请求文件和剥离结果的url。但是请记住,文件夹哈希将在文件更改时进行更改。

除此方案外,还可以配置文件分块以改进浏览器中的并行资源加载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24711696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档