Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
管理所有资产缓存(图像、css、js、所有内容)的最佳实践_Css_Image_Caching_Web_Assets - Fatal编程技术网

管理所有资产缓存(图像、css、js、所有内容)的最佳实践

管理所有资产缓存(图像、css、js、所有内容)的最佳实践,css,image,caching,web,assets,Css,Image,Caching,Web,Assets,我正在开发一个中等规模的web应用程序,并试图找到最好的解决方案,使所有浏览器都使用缓存,并且仅在加载资产更新时使其失效 根据我在这里和其他地方所做的研究,每个人似乎都同意在资产(如css或js文件)上附加?v={version#}是在资产更新时自动使缓存失效的一种好方法。(根据和) 但在我看来,这个解决方案应该推广到驻留在web服务器上的所有资产 所以我的问题是,让构建脚本在整个网站上查看每个src=”“属性——无论是img、css还是js,并以编程方式附加?={timestamp},其中ti

我正在开发一个中等规模的web应用程序,并试图找到最好的解决方案,使所有浏览器都使用缓存,并且仅在加载资产更新时使其失效

根据我在这里和其他地方所做的研究,每个人似乎都同意在资产(如css或js文件)上附加?v={version#}是在资产更新时自动使缓存失效的一种好方法。(根据和)

但在我看来,这个解决方案应该推广到驻留在web服务器上的所有资产

所以我的问题是,让构建脚本在整个网站上查看每个src=”“属性——无论是img、css还是js,并以编程方式附加?={timestamp},其中timestamp是文件上次修改的时间,这是一种好做法吗。这样,无论何时从开发到登台再到生产,只有那些已修改的文件才会具有更改的时间戳,并且浏览器将知道如何使这些文件的缓存无效

这种方法有缺陷吗


注意:再仔细考虑一下,时间戳对于以后恢复的更改肯定是不可取的。因此,附加?={md5(filecontents)}是一种更健壮的方法。尽管如此,关于是否在所有资产和所有构建中实现此功能的问题仍然存在。

发现了我认为是一个可接受的解决方案,我不知道我在最初的调查中如何遗漏了这一点

对于任何遇到这个问题的人,请注意,我指的是链接页面上的第一个答案,它引用了谷歌的apache插件。这可以在web服务器级别工作,因此“[它可以]使用PHP、rails、python、静态HTML——任何东西。”


这正是我一直在寻找的解决方案。所有web开发人员都应该使用此工具或类似工具来保持缓存逻辑与代码本身正交。

有趣的问题。期待答案:)@ajkochanowicz这不是一个通用的解决方案,即使RoR为您处理这个问题。我提出的问题适用于所有web服务器和所有开发环境。一个好问题是,RoR如何实现自己的解决方案,以及它是否推广到所有开发环境?因为这个问题是如此普遍,所以应该有开源解决方案来解决它。为了向像我这样在这里找到解决方法的人澄清一下,@PeterThorpe所指答案的链接是