private String _getHashcode(String[]... keys) {
    try {
      CacheKeyGenerator cacheKeyGenerator = new JavaMD5CacheKeyGenerator(128);

      for (String[] key : keys) {
        cacheKeyGenerator.append(key);
      }

      return String.valueOf(cacheKeyGenerator.finish());
    } catch (NoSuchAlgorithmException nsae) {
      throw new RuntimeException(nsae);
    }
  }
  protected String getCacheFileName(HttpServletRequest request) {
    CacheKeyGenerator cacheKeyGenerator =
        CacheKeyGeneratorUtil.getCacheKeyGenerator(DynamicCSSFilter.class.getName());

    cacheKeyGenerator.append(HttpUtil.getProtocol(request.isSecure()));
    cacheKeyGenerator.append(StringPool.UNDERLINE);
    cacheKeyGenerator.append(request.getRequestURI());

    String queryString = request.getQueryString();

    if (queryString != null) {
      cacheKeyGenerator.append(sterilizeQueryString(queryString));
    }

    if (PortalUtil.isRightToLeft(request)) {
      cacheKeyGenerator.append("_rtl");
    }

    return String.valueOf(cacheKeyGenerator.finish());
  }