小编und*_*Pez的帖子

Symfony 使用 Redis 作为默认缓存编译容器

我有一个 Symfony 应用程序,我想使用 Redis 作为缓存系统。Symfony 开箱即用的默认缓存系统是文件系统缓存。

从文档中我了解到 Symfony 中有两个命名缓存;cache.app因此cache.system我使用以下 cache.yaml 将两者设置为 Redis:

framework:
    cache:
    # Put the unique name of your app here: the prefix seed
    # is used to compute stable namespaces for cache keys.
    prefix_seed: myteam/myapp

    default_redis_provider: "redis://redis:6379"

    # The app cache caches to the filesystem by default.
    # Other options include:

    # cache.app via Redis
    app: cache.adapter.redis

    # cache.system also
    system: cache.adapter.redis
Run Code Online (Sandbox Code Playgroud)

完成此操作后,我加载了一个示例页面并监视了缓存文件夹。我发现尽管在 Redis 中创建了密钥,但仍在缓存文件夹中创建文件。

我知道 Symfony 不建议弄乱内核在文件缓存中创建的文件,但即使是 cache/prod/Containerxxxxx 文件夹也会被写入。

不属于应用程序或系统的文件夹中可能会缓存什么?是否有另一个我错过的命名缓存?

php caching redis symfony

5
推荐指数
1
解决办法
3230
查看次数

Google跟踪代码管理器包括在Apache中传递mod-security规则

我一直在寻找在我的网站上使用Google跟踪代码管理器,但由于默认的Google包含代码被我的服务器上的mod-security安装阻止,我在第一个障碍时失败了:

标准GTM包括代码:

<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->
Run Code Online (Sandbox Code Playgroud)

来自mod-security的回复:

WARNING:    Possibly malicious iframe tag in output
Message:    Outbound Anomaly Score Exceeded (score 15): Possibly malicious iframe tag in output
Run Code Online (Sandbox Code Playgroud)

触发的规则是ids 981000和981001.

我可以理解为什么mod-security可能认为带有"display:none; visibility:hidden"的iframe可能是恶意的,并且删除style属性会使规则981001停止触发,但由于规则981000,请求仍然失败.

981000似乎对宽度和高度属性应该有一个强烈的意见,但我已经尝试将它们设置为'1'和'10'无效:-(

有谁知道如何格式化iframe以适应此规则?或者如何更改GTM包含代码以使其不包含iframe?

谢谢

PS:我知道你可以通过删除整个noscript区域解决这个问题,但我正在寻找一种不会改变包含代码功能的解决方案.

PPS:这是规则981000匹配的模式,在我的大脑在嵌套捕获组云中爆炸之前,我能理解其中的一半;-)

Pattern match "<\W*iframe[^>]+?\b(?:width|height)\b\W*?=\W*?["']?[^"'1-9]*?(?:(?:20|1?\d(?:\.\d*)?)(?![\d%.])|[0-3](?:\.\d*)?%)"
Run Code Online (Sandbox Code Playgroud)

apache iframe mod-security google-tag-manager

4
推荐指数
2
解决办法
3278
查看次数

jQuery样式的函数,可以像对象一样访问

我正在为Web服务创建一个AJAX API,我希望能够调用类似jQuery的访问器.jQuery似乎能够将'jQuery'作为函数执行,但也可以使用它来直接访问作为函数EG结果的对象:

jQuery();
jQuery.each({});
Run Code Online (Sandbox Code Playgroud)

这是我似乎无法实现的诀窍:

myAPI('foo'); //output: 'foo'
myAPI('foo').changeBar(); //output: 'foo' 1
myAPI.changeBar(); //Error: not a function
Run Code Online (Sandbox Code Playgroud)

我已经看到了类似问题的答案,这些答案很有帮助,但并没有真正回答我的问题.

#8734115 - 真的很有趣,但你无法访问由f.prototype设置的方法.

#2953314 - 使用多个操作来创建对象而不是单个函数.

这是我的代码:

(function(window) {

        var h = function(foo) {
                // The h object is actually just the init constructor 'enhanced'
                return new h.fn.init(foo);
        };
        /**
         * Methods defined at protoype.
         */
        h.fn = h.prototype = {
            constructor: h,
            init: function(foo) {
                console.log(foo);
                return this;
            },
            splice : function () {},
            length : 0,
            bar : 0,
            changeBar …
Run Code Online (Sandbox Code Playgroud)

javascript jquery

2
推荐指数
1
解决办法
2269
查看次数