如何从静态资源中删除查询字符串?

时间:2018-02-01 11:17:59

标签: query-string drupal-8

我试过了 https://www.drupal.org/project/remove_querystring_from_static_resource

但它对我来说效果不佳。

如何以编程方式实现?

以下是测试结果: enter image description here

2 个答案:

答案 0 :(得分:1)

使用查询字符串访问静态资源(例如图像,css和javascript文件)时,通常会遇到此问题。

Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("ftp://ftp.hosteurope.de/"));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setPackage("com.android.chrome");

这些查询字符串用于避免浏览器缓存。它们的值已更改,因此浏览器应该执行新请求而不是获取缓存资源。

您应该删除这些查询字符串(在我的示例中为Eg: http://example.com/image.png?something=test )并使用一些合适的?something=test标题。

修改 试试这段代码。

将THEMENAME替换为您的主题名称。

Cache-Control

答案 1 :(得分:0)

最后我用这段代码解决了这个问题:


    use Drupal\Core\Asset\AttachedAssetsInterface;

    /**
    * Implements hook_css_alter().
    */

    function bootstrap_css_alter(&$css, AttachedAssetsInterface $assets){
        foreach ($css as &$file) {
            if ($file['type'] != 'external') {
            $file['type'] = 'external';
            $file['data'] = '/' . $file['data'];
            }
        }

     }


     /**
     * Implements hook_js_alter().
     */

    function bootstrap_js_alter(&$javascript, AttachedAssetsInterface $assets){

        foreach ($javascript as &$file) {
            if ($file['type'] != 'external') {
            $file['type'] = 'external';
            $file['data'] = '/' . $file['data'];
            }
        }
    }

将此代码放入yourthemename.theme文件中 它在drupal 8上完美运行 希望这能帮到你们。