如何禁用某些视图的动作控制器缓存?

时间:2017-03-06 11:24:04

标签: ruby-on-rails ruby

我的项目中有一些静态页面,我希望能够不时更改并且不要重新启动服务器以应用更改。 如果import { Directive, ElementRef, Renderer } from '@angular/core'; import { NavController } from 'ionic-angular'; @Directive({ selector: '[header-shrink]', host: { '(ionScroll)': 'onContentScroll($event)' } }) export class HeaderShrink { header: any; headerHeight: any; translateAmt: any; scrollPosition: number = 0; lastScrollTop: number = 0; activePage: any; constructor(public navCtrl: NavController, public element: ElementRef, public renderer: Renderer) { } ngAfterViewInit() { this.activePage = this.navCtrl.getActive()._cmp; // get current active page // ion-header classname this.header = this.activePage._nativeElement.getElementsByClassName("shrinkable")[0]; // the height of the header this.headerHeight = this.header.clientHeight; } onContentScroll(ev) { ev.domWrite(() => { this.updateHeader(ev); }); } updateHeader(ev) { this.scrollPosition = ev.scrollTop; if (this.scrollPosition > this.lastScrollTop && this.scrollPosition >= 25) { // scrolling down this.renderer.setElementStyle(this.header, 'transition', 'all 0.3s linear'); this.renderer.setElementStyle(this.header, 'transform', 'translateY(-' + this.headerHeight + 'px)'); } else { // scrolling up this.renderer.setElementStyle(this.header, 'transform', 'translateY(0px)'); } // reset this.lastScrollTop = this.scrollPosition; } } 设置为true,这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

使用方法cache_store,您应该可以设置 ActiveSupport::Cache::NullStore

因此,在您的控制器中,您可以使用以下内容:

class ProductsController < ApplicationController
 config.cache_store = :null_store
end

注意:我没有测试过此代码,但它应该为您提供指导。

编辑由于您正在使用部分内容,因此您可以通过将caches_page :new设置为仅缓存新操作或将缓存目录设置为{{}来使用actionpack-page_caching。 {1}}使用:

/dev/null

由于它是一个静态内容,我也没有看到在这些页面上创建缓存的任何麻烦,但你是最好的老板!

答案 1 :(得分:0)

我发现自己使用标准IO库从本地文件中读取HTML代码并通过render方法呈现它。因为它是静态页面,所以我不需要在里面执行任何rails代码。它对我有用,不了解性能,但应该没问题我认为=)

答案 2 :(得分:-1)

两个选项:

  • 修改缓存的密钥以使其过期。

  • 调用Rails.cache.clear以清除所有缓存,这是最快的解决方案但是注意,它会清除所有缓存