热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用RequireJS缓存破坏特定模块-CachebustingspecificmoduleswithRequireJS

Thisquestionhasbeenaskedseveraltimesbutnotspecifictothisexample.这个问题已被多次询问,但不是特定于这个例子。

This question has been asked several times but not specific to this example.

这个问题已被多次询问,但不是特定于这个例子。

Here is an overview of our application:

以下是我们的应用程序概述:

  • Simple server routing with Express on Node
  • 使用Express on Node进行简单的服务器路由
  • Single page backbone application
  • 单页骨干应用程序
  • Core modules and libraries (JS/CSS) that don't change
  • 核心模块和库(JS / CSS)不会改变
  • Widget JS/LESS/HTML files that frequently change
  • 经常更改的小部件JS / LESS / HTML文件

During development, I am looking to cache bust files that change but not those core libraries to speed up my page reloads and quicken my development.

在开发过程中,我希望缓存更改胸部文件而不是那些核心库,以加快我的页面重新加载并加快我的开发速度。

I have found explanations on:

我找到了解释:

  1. Cache Busting on RequireJS - here
  2. 在RequireJS上缓存Busting - 这里
  3. Explanation on Cache Busting Specific Modules - here
  4. Cache-Busting Specific Modules的解释 - 这里

Could the solution:

可以解决方案:

  1. Explain how the requireJS caching busting works?
  2. 解释requireJS缓存破坏是如何工作的?
  3. Provide a solution for this specific scenario.
  4. 为此特定方案提供解决方案。

2 个解决方案

#1


4  

The cache-busting works by appending an always-unique query string to the end of every file which is required. It makes use of RequireJS's urlArgs config value; RequireJS takes care of appending it for you:

缓存清除的工作原理是将一个始终唯一的查询字符串附加到所需的每个文件的末尾。它利用了RequireJS的urlArgs配置值; RequireJS负责为您追加:

urlArgs: "bust=" + (new Date()).getTime()

The(new Date()).getTime() part is just a simple way to get a unique string out of Javascript. You could do some variation on Math.random(), but using the number of milliseconds since the epoch guarantees uniqueness, for optimum cache-bustage.

(new Date())。getTime()部分只是一种从Javascript中获取唯一字符串的简单方法。你可以在Math.random()上做一些变化,但是使用自纪元以来的毫秒数保证了唯一性,以获得最佳的缓存缺陷。

I think Mr Burke is suggesting something like:

我认为伯克先生建议的事情如下:

require.config({
    baseUrl: '/base/path',
    paths: {
        'fileAlias': 'fileLikelyToChange?bust=' + (new Date()).getTime(),
        'anotherFileAlias': 'anotherFileLikelyToChange?bust=' + (new Date()).getTime(),
        'jQuery': 'jQuery'
    },
});

So, instead of the ubiquitous urlArgs cache-busting, you apply it specifically to each file which is likely to change; hence, excluding any libraries.

因此,不是无处不在的urlArgs缓存破坏,而是将其专门应用于可能会发生变化的每个文件;因此,不包括任何图书馆。

I haven't tested it, but I'd probably tidy it up to something like:

我没有测试过,但我可能会把它整理成类似的东西:

function bust(path) {
    return path + '?bust=' + (new Date()).getTime();
}

require.config({
    baseUrl: '/base/path',
    paths: {
        'fileAlias': bust('fileLikelyToChange'),
        'anotherFileAlias': bust('anotherFileLikelyToChange'),
        'jQuery': 'jQuery'
    },
});

#2


0  

Just remember that if you really need to rely on some external script that you can use $.getScript instead of require to ensure that it's included. I have some non-amd scripts that are for 3rd party integration (e.g. amazon payments), which I used getScript for instead of require. If you can use this method, it would avoid sending the cache busting parameters from urlArgs to the external server.

请记住,如果你真的需要依赖一些外部脚本,你可以使用$ .getScript而不是require来确保它包含在内。我有一些非amd脚本用于第三方集成(例如亚马逊支付),我使用getScript代替require。如果您可以使用此方法,则可以避免将缓存清除参数从urlArgs发送到外部服务器。


推荐阅读
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
author-avatar
ik人生如梦场
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有